c语言问题 #include "stdio.h" int main() { char a,b; scanf("%c",&a); a=a+32; printf("%c尀n

2024-11-22 19:37:17
推荐回答(3个)
回答1:

你的第二个输入b其实没有被读取
参见以下解释,来自 http://bbs.csdn.net/topics/380055507
scanf()和getchar()函数是从输入流缓冲区 中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字 符后会留下字符\n,这样第二次的读入函数直接从缓冲区中把\n取走了,显然读取成功了,所以不会再从终端读取!因此后面只要加上fflush(stdin)函数释放缓冲区数据就可以了.

解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以

回答2:

把scanf("%c\n",&b);改成scanf(" %c",&b);——注意在%前加一个空格。scanf("%c",&a);也改成scanf(" %c",&a);。

回答3:

当成int类型了,强制转换一下

~~~~~~~~