1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) 
{

       char p,q;
       printf("Hello enter char: ");
       p=getchar();
       printf("the char is: %c\n",p);

       printf("Hello enter char: ");
       q=getchar();
       printf("the char is: %c\n",q);
    return 0;
}

(为什么我的第二个 printf 和 scanf 的输出不等我在退出程序之前输入一个字符?.....我的意思是你知道它在哪里说 q=getchar();??? 不应该等待在退出程序之前输入一个字符?但由于某种原因,程序在进入下一行时才退出......

4

3 回答 3

1

按下回车键时,正在输入一个字符“\ n”。因此在输入第二个字符之前使用了您的 getchar()。我认为您需要以下代码:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char p,q;
    printf("Hello enter char: ");
    p=getchar();
    printf("the char is: %c\n",p);

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

    printf("Hello enter char: ");
    q=getchar();
    printf("the char is: %c\n",q);
    return 0;
}
于 2013-11-04T05:12:48.897 回答
0

您也可以使用 agetch()而不是getchar()来避免按 enter 键。

#include <stdio.h>
#include <conio.h>

int main(void) 
{

       char p,q;
       printf("Hello enter char: ");
       p=getch();
       printf("the char is: %c\n",p);

       printf("Hello enter char: ");
       q=getch();
       printf("the char is: %c\n",q);
       return 0;
}
于 2013-11-04T13:03:07.093 回答
0

当遇到无效的用户输入时,使用 getchar() 来读取字符,以及在输入流中卡住不需要的字符的其他类似实例(就像在你的情况下它是一个换行符)我定义了一个名为 FLUSH 的常量

   #define FLUSH while(getchar() != '\n')

解决问题。该语句的作用是读取一个字符,然后将其丢弃。现在,如果您尝试将其放在您的一个 getchars 之后,即

   p=getchar();
   printf("the char is: %c\n",p);
   FLUSH;

它将读取换行符然后停止,因为 while 语句中的条件不再成立。

注意:对提示使用 getchar() 会在输入流中留下一个 '\n',一旦你发出另一个提示并且没有消除那个 '\n',你会发现这很麻烦。

于 2013-11-05T00:59:51.127 回答