我这里有一段代码:
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 循环并在执行之前打印所有内容?
更新 - 我将终止条件更改为 'x' 而不是 '\n' 并且确实可以正确打印。
在循环开始之前添加一个随机 getchar() 可以解决问题,因为 '\n' 被读入那里。