【发布时间】:2020-06-07 15:48:05
【问题描述】:
我正在实施 BST。 (i = 插入,s = 搜索,p = 打印)。插入和搜索都采用一行中用空格分隔的两个参数,并执行必要的职责。然而,print 只是假设接受 一个 参数 p,然后继续打印树。
每当我在命令行参数中输入 p 或任何其他字符时,循环都在等待另一个输入。如果我输入 i 后跟一个数字,程序将继续。 printf 语句甚至不会被执行,因此 ch == 'p' 甚至不会触发。有什么建议吗?
int main(int argc, char **argv) {
char ch;
int i;
Node *root = NULL;
while(scanf(" %c",&ch) != EOF) {
if(ch == 'i') {
scanf(" %d", &i);
InsertNode(&root, newNode(i));
}
if(ch == 's') {
scanf(" %d", &i);
if(SearchNode(root,i) == 0) {
printf("absent\n");
}
else {
printf("present\n");
}
if(ch == 'p') {
printf("Trying to recursively print!");
return 0;
InOrderRecursive(root);
}
}
}
return EXIT_SUCCESS;
}
【问题讨论】:
-
修复你的缩进,你可能会发现问题。
p块位于s块内。使用调试器也是一个好主意 - 您可以逐行执行代码。 -
另外,char 类型不能保存 EOF 值。
标签: c pointers input scanf binary-search-tree