我尝试使用 fgets 读取两行,但只读取了第一行,然后返回了一个段错误。我不确定我需要更改什么才能在第二行中读取它。任何帮助将不胜感激!
int main(void)
{
char str[100];
char *word;
//First Line
fgets(str, 100, stdin);
printf("%s", str);
word = strtok(str," ");
printf("%s\n", word);
while(word != NULL)
{
word = strtok(NULL," ");
printf("%s\n", word);
}
//Second Line
fgets(str, 100, stdin);
printf("%s", str);
word = strtok(str," ");
printf("%s\n", word);
while(word != NULL)
{
word = strtok(NULL," ");
printf("%s\n", word);
}
return 0;
}
最佳答案
您在代码的两部分中弄错了函数调用的顺序;您在调用 strtok()
之后调用 printf()
而未检查 NULL。修复如下:
int main(void)
{
char str[100];
char *word;
//First Line
fgets(str, 100, stdin);
printf("Printing entire string: %s\n", str);
word = strtok(str, " ");
printf("Printing tokens:\n");
while (word != NULL)
{
printf("%s\n", word);
word = strtok(NULL, " ");
}
//Second Line
fgets(str, 100, stdin);
printf("Printing entire string: %s\n", str);
word = strtok(str, " ");
printf("Printing tokens:\n");
while (word != NULL)
{
printf("%s\n", word);
word = strtok(NULL, " ");
}
return 0;
}
关于c - 尝试使用 fgets 读取两行。为什么它只读第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49480175/