下面的程序有什么问题(这里发生了什么)?它应该在用户插入空字符串(仅按 ENTER)后打破 for 循环,但在我的情况下,它以无限 for 循环结束。我尝试了评论中的内容,但没有成功。
#include <stdio.h>
#include <string.h>
struct S {
char str [10];
};
int main(void)
{
int n;
struct S strings [10];
for (n = 0; n < 10; n++) {
# fflush(stdout);
scanf("%s", strings[n].str);
if (strlen(strings[n].str) == 0)
break;
# getchar();
}
printf("done");
return 0;
}
当我scanf
用gets(strings[n].str);
done替换时,永远不会打印。你会如何解决它?
此示例解决方案有效。与我的代码相比有什么不同吗?