【发布时间】:2015-01-24 17:45:04
【问题描述】:
我对 C 很陌生,这里有这个简单的代码:
int main(int argc, char **argv){
FILE *input = stdin;
char string[20];
while (fscanf(input, "%s",string)) {
printf("String: %s \n",string);
}
printf("Done");
return 0;
}
我遇到的问题是“完成”行永远不会被打印出来。当 while 循环从标准输入完成读取后,它不会执行任何操作。有什么我不知道的概念吗?提前致谢。
【问题讨论】:
-
您可能会遇到缓冲区溢出。确保您在提示中输入的字符少于 19 个(或扩大字符串 [20] 的大小)
-
这还不够,请张贴部分输入文件。
-
char string[20] 不是说每个所谓的字符串不分配20个字符吗?我只输入了一个少于 20 个字符的单词,循环后的 printf 仍然没有被执行。
-
“当 while 循环完成从标准输入读取时” - 它实际上是否完成了从标准输入的读取?你是如何终止标准输入的?
-
@dhint4 while 循环说当条件为真时做某事。在这种情况下,只要它能够匹配输入,它将继续从标准输入读取。我要问的是,您如何表示没有更多可用输入?正如其他人所暗示的那样,您通常需要按 ctrl+D 或类似键来表示您没有更多的“stdin”输入。