以下のプログラムの何が問題になっていますか(ここで何が起こっているのですか)?ユーザーが空の文字列を挿入した後(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は印刷されません。どのように修正しますか?
このサンプルソリューションは機能します。私のコードと比較して違いはありますか?