#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(); ???它不应该在退出程序之前等待输入一个字符?但由于某种原因,程序只是在它进入下一行时退出...
答案 0 :(得分:1)
按Enter键时,输入一个字符'\ 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;
}
答案 1 :(得分:0)
您也可以使用getch()
代替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;
}
答案 2 :(得分:0)
当遇到无效的用户输入时,使用getchar()读取char,以及其他类似的实例,其中有不需要的字符卡在输入流中(就像在你的情况下它是换行符)我定义了一个名为FLUSH的常量
#define FLUSH while(getchar() != '\n')
解决问题。这句话的作用是它读取一个角色,然后抛弃它。现在,如果你试图把它放在你的一个getchars之后,即
p=getchar();
printf("the char is: %c\n",p);
FLUSH;
它将读取换行符然后停止,因为while语句中的条件不再成立。
注意:对于提示使用getchar()会在输入流中留下'\ n',一旦你发出另一个提示并且没有根除'\ n',你会发现这很麻烦。