而/ Switch循环实现

时间:2014-06-16 21:20:44

标签: c while-loop switch-statement

当我运行此代码并且我点击其中一个中断(不包括大小写' 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);
}

任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:1)

在读取数字和字符串后添加getchar(),因为scanf在输入流中留下新行字符。最好使用fgets()。

的Vivek