循环未按预期退出

时间:2013-09-27 15:21:50

标签: c scanf

我希望这个程序在我按下回车键时停止循环,但是终端变成空白而且没有显示任何内容。这有什么不对吗?

#include <stdio.h>
int main()
{
   int c;
   printf("Enter a char(To exit loop press enter)");
   for(c=' ';c!='\n';)
   {
       scanf("%d",&c);

       putchar(c);
   }

   return 0;
}

2 个答案:

答案 0 :(得分:1)

如果你想scanf()为char,你需要使用%c而不是%d和char变量:

char c;
scanf("%c",&c);

答案 1 :(得分:1)

因此,请参阅以下修复: -

   char c ; // Use a char
   char  ch;
   printf("Enter a char(To exit loop press enter)");
   scanf("%c",&c);
   for(;c!='\n';)
   {
     //Eat up the trailing newline from previous input

     while(( ch =getchar() ) != '\n' && (ch != EOF ));            

      scanf("%c",&c);

       putchar(c);
   }