我正在执行BST。 (i =插入,s =搜索,p =打印)。插入和搜索都接受两个参数,并用一行空格隔开,并执行必要的任务。但是,print仅假定采用one参数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或其他任何字符时,循环都在等待其他输入。
使用自动格式化程序,其原因/修复应显而易见。
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') { // this is never true.
printf("Trying to recursively print!");
return 0;
InOrderRecursive(root);
}
}
}
return EXIT_SUCCESS;
}