当我运行此代码并且我点击其中一个中断(不包括大小写' x')时,第一个printf语句输出两次。我不确定为什么会这样。想知道是否有人能从代码中看到它而不需要实际运行程序的功能。
int main(void)
{
int key;
char command, word[STRINGMAX];
struct data_node *first=NULL, *ptr, *new_node;
while (command)
{
printf("Enter a list command (+-flx): ");
scanf("%c", &command);
switch(command)
{
case '+' :
printf("'+' detected\n");
printf("Enter key data: ");
scanf("%d", &key);
printf("What string to store?: ");
scanf("%s", &word);
first = ptr = insert(&first, key, word);
break;
case '-' :
printf("'-' detected\n");
printf("Enter key data: ");
scanf("%d", &key);
delete(&first, key);
break;
case 'f' :
printf("'f' detected\n");
printf("Enter a key data: ");
scanf("%d", &key);
find_node(first, key);
break;
case 'l' :
printf("'l' detected\n");
dump_list(first);
break;
case 'x' :
printf("Goodbye.\n");
exit(0);
default :
break;
}
}
return (0);
}
任何帮助表示赞赏。感谢。
答案 0 :(得分:1)
在读取数字和字符串后添加getchar(),因为scanf在输入流中留下新行字符。最好使用fgets()。
的Vivek