【发布时间】:2021-10-22 03:48:15
【问题描述】:
为什么是结果 1?我不明白。
此代码是二叉搜索树的一部分。
我想制作一个程序来制作一个使用命令行获取输入节点的二叉搜索树。
所以,我使用了EOF,但这对我来说有点难。
我只是一个初学者。
int main() {
struct node *root = NULL;
int ch, te;
int count = 0;
while (1) {
ch = scanf("%d", &te);
printf("%d\n", ch);
if (ch == EOF)
break;
else {
insert(root, ch);
count++;
}
}
preorder(root);
printf("%d", count);
return 0;
}
【问题讨论】:
-
请提供minimal reproducible example。我们没有
struct node、insert或preorder的定义(我们可能不需要它们,这个问题可能可以在没有不必要的树的情况下重现)。 -
您希望
scanf何时返回EOF?你是如何做到这一点的? -
同样是 int main() { int ch, te;整数计数 = 0; while(1) { ch = scanf("%d", &te); printf("%d\n", ch);如果(ch== EOF)中断; } 返回 0; } 喜欢这段代码。我认为这是这段代码的问题
-
我通过命令行输入ctrl+z来停止这个程序
-
scanf()返回发生的成功转换的数量。在scanf("%d", &te);中,您要求"%d"(即1-conversion)。所以在成功时,对scanf()的调用的返回是1。如果您有"%d %d",您将要求进行 2 次转换(到int),成功后返回将是2...参见 man 3 scanf
标签: c binary-search-tree