scanf函数是从标准缓冲区读取字符的,由于每次输入之后都按了一次回车,标准缓冲区记录了这次回车,而char类型会记录这个回车,并赋值给了变量b
【以下回答由 GPT 生成】
问题的原因是在使用"%c%c"来读取两个字符时,scanf函数在读取第一个字符后会将换行符('\n')保留在输入缓冲区中。然后,第二个%c读取到的就是这个换行符,而不是你输入的第二个字符。
解决这个问题的方法是在%c之间加入一个空格或其它类型的格式控制符,这样scanf函数会先读取并忽略掉输入缓冲区中的换行符。你可以尝试以下两种方法:
scanf("%c %c", &a, &b);
char newline;
scanf("%c%c%c", &a, &b, &newline);
这样,使用两个%c进行输入时就能得到正确的结果了。
代码示例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char *argv[]) {
char a, b, A, B;
scanf("%c %c", &a, &b);
A = a + 32;
B = b + 32;
printf("%c%c", A, B);
return 0;
}
希望这些解决方法能够帮到你!
【相关推荐】
不用加空格也可以啊