【发布时间】:2013-01-08 16:48:15
【问题描述】:
我这里有一段代码:
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' 被读入其中。
【问题讨论】:
-
本站没有代码格式化程序...
-
正确缩进代码应该很容易;只需将代码复制并粘贴到编辑器中,选择它,然后点击 { } 按钮。
-
它已经被别人格式化了,你只是让它变得更糟
-
您是在获得 First Entry 后立即输入 CRLF(\n) 还是按 Enter 键?在你的控制台上?
-
你的调试器说什么?