空字符串结束循环

xra*_*alf 0 c

以下程序出了什么问题(这里发生了什么)?它应该在用户插入空字符串后按下for循环(仅按ENTER键),但在我的情况下,它以无限循环结束.我尝试了评论中没有成功的内容.

#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;
}
Run Code Online (Sandbox Code Playgroud)

当我scanf用gets(strings[n].str); done替换时永远不会打印.你会怎么解决它?

此示例解决方案有效.与我的代码相比有什么不同吗?

Sac*_*nth 5

回车键不是空字符串,它是一个ascii字符,或者更确切地说是两个字符CR和LF(在Windows上).