我在 C 中使用 scanf 进行所有输入。现在我看到了有关 scanf()
的其他类似问题。他们建议使用 fgets()
而不是scanf()
。以后我也会这样做。然而,目前代码的这个特定部分带有 scanf()
似乎从来没有起作用。我知道有一个解决方案。
我的代码是:
#define LENGTH 1000
#define WORD 100
int main(){
int i = 0;
char s[WORD][LENGTH];
do {
scanf("%s", s[i]);
i++;
}
while (s[i][strlen(s[i])] != EOF);
printf("%s\n", s);
return 0;
}
应该有一些东西而不是 EOF
在检查行尾的 while 循环中。最终结果应该是 s[]
中的单词数组并且程序应该打印不带空格的单词数组。
最佳答案
不幸的是,scanf()
不会读取您需要检查行尾的字符,或者至少不会使用 "%s"
作为说明符。
相反,请使用以下内容
char line[100];
if (scanf("%99[^\n]", line) == 1) {
fprintf(stdout, "%s\n", line);
}
这样,它不会在空白字符处停止,其行为类似于 fgets()
,只不过它不读取 '\n'
字符如果您再次调用它,可能会出现问题。
关于c - 使用 scanf 扫描一行带空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42595386/