【发布时间】:2019-01-02 06:48:06
【问题描述】:
我已经做了一个我的getline函数的程序。直到遇到'\n'并转移到下一个输入。此外,我在这里使用指针数组来存储字符串输入,但程序在第一个字符串输入后崩溃。有什么问题?
这是程序的代码。我试过调试它,但我在这里找不到问题。
#include<stdio.h>
#include<stdlib.h>
void getline2(char *s)
{
char c;
while((c=getchar())!='\n')
{
*s=c;
s++;
}
*s='\0';
}
int main()
{
char *lines[3];
int i=0;
while(i<3)
{
getline2(lines[i]);
i++;
}
for (i = 0; i < 3; i++)
{
printf("\n%s", lines[i]);
}
return 0;
}
当我按下回车后输入第一行时程序崩溃。
【问题讨论】:
-
您已经声明了一个指针数组,但尚未为指针分配内存。因此,您的代码具有未定义的行为。
-
好奇:谁或什么文字建议将
"\n"放在"\n%s"的开始 处? -
阅读How to debug small programs。这样的bug你应该可以自己找出来的。
-
如果
printf循环不相关,则应将其从minimal reproducible example 中删除。 -
@chux 我不同意。它已经在 printf 之前崩溃了。
main中的 while 循环也可能是噪音。getline2(lines[0])足以导致崩溃。