#include<stdio.h>
int main()
{
char ch,h;
printf(“请输入ch字符:\n”);
ch=getchar();
if(ch==”6″)
{
h=getchar();
}
else
{
printf(“ch字符为:”);
putchar(ch);
printf(“\n”);
}
printf(“请输入ch字符:\n”);
ch=getchar();
return 0;
}
为什么这里面的h=getchar()不执行,而是直接跳出
int main()
{
char ch,h;
printf(“请输入ch字符:\n”);
ch=getchar();
if(ch==”6″)
{
h=getchar();
}
else
{
printf(“ch字符为:”);
putchar(ch);
printf(“\n”);
}
printf(“请输入ch字符:\n”);
ch=getchar();
return 0;
}
为什么这里面的h=getchar()不执行,而是直接跳出
解决方案
60
原因是你第一句ch = getchar();仅仅只是读掉了输入缓冲区中的一个字符(还遗留了回车符)
所以程序后面的ch = getchar();会直接读走回车符而不会等待输入,加一句fflush(stdin);才行
所以程序后面的ch = getchar();会直接读走回车符而不会等待输入,加一句fflush(stdin);才行
#include<stdio.h>
int main()
{
char ch, h;
printf("请输入ch字符:\n");
ch = getchar();
fflush(stdin);
if (ch == "6")
{
h = getchar();
}
else
{
printf("ch字符为:");
putchar(ch);
printf("\n");
}
printf("请输入ch字符:\n");
ch = getchar();
return 0;
}
10
1楼说的对,
根本原因就是输入缓冲区里面有不是你期望的数据。不同的环境可能清空缓冲区的函数和方法不一样,上baidu搜索一下,找到合适的函数就好了。
根本原因就是输入缓冲区里面有不是你期望的数据。不同的环境可能清空缓冲区的函数和方法不一样,上baidu搜索一下,找到合适的函数就好了。