关于scanf输入控制符%c 以及%2c
在试验scanf功能的时候发现的现象
感到迷惑不解故提问
#include
int main()
{
char a, b, c;
scanf("%c", &a);
printf("a: %c\n", a);
scanf("%c", &b);
printf("b: %c\n", b);
scanf("%2c", &c);
printf("c: %c\n", c);
printf("b: %c\n", b);
printf("%c, %c, %c\n", a, b, c);
return 0;
}
运行结果如下,其中第一行为输入,后面有一个回车:
abcd
a: a
b: b
c: c
b: d
a, d, c
为什么在输入变量c以后 b的值变成了d呢?求解答,谢谢
环境:win11系统, mingw8.1.0, vscode当中按F6编译运行
我已经找到问题所在了
和变量的内存地址有关
输出内存地址以后发现
内存里面存放顺序是c b a
读入c d两个字符以后 d就跑到了变量b的地方
从而把原来的值覆盖了