#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搜索一下,找到合适的函数就好了。