我这里有一段代码:
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'被读入那里。
答案 0 :(得分:2)
正在打印它们,只是它们是空字符串! (提示:f
和l
不会改变 - 我假设使用f
的最后一个循环是错误的!)
答案 1 :(得分:0)
从输入中读取字符时,您没有推进指针f
。您始终在位置0覆盖chatacter,最后位置0包含\0
答案 2 :(得分:0)
尝试将\ n放在最后
printf("First Entry?\n");
printf("Last Entry?\n");
答案 3 :(得分:0)
{st}中的getchar
读取。如果先前输入中有任何换行符,则可能导致问题。
就这么说,
fflush(stdin);
之后
printf("First Entry?");