ここにコードがあります:
Tree *rangeprint(Tree *t) {
char first[20];
char last[20];
int f = 0;
int l = 0;
printf("First Entry?\n");
while(1) {
first[f] = getchar();
if(first[f] == '\n') {
first[f] = '\0';
break;
}
f++;
}
printf("Last Entry?\n");
while(1) {
last[l] = getchar();
if(last[l] == '\n') {
last[l] = '\0';
break;
}
l++;
}
printf("%s %s\n", first, last);
}
このコードを実行すると、コンソールに次のような出力が表示されます。
First Entry?
Last Entry?
while ループをスキップして実行前にすべてを出力するのはなぜですか?
更新 - 終了条件を '\n' ではなく 'x' に変更したところ、正しく表示されるようになりました。
ループが始まる前にランダムな getchar() を追加すると、問題が修正されます。これは、'\n' がそこに読み込まれるためです。