scanf 的匹配原则不同的编译器不一样?
程序代码:#include <stdio.h>
int main(void)
{
char ch1 = 'a';
char ch2 = 'b';
scanf("%c,%c", &ch1, &ch2);
printf("%c, %c\n", ch1, ch2);
return 0;
}同一段程序在2012和6.0里面结果不一样,在6.0里能正常运行,但是到2012就不行了,一运行就出错(scanf已经改成scanf_s)
我的想法是,在6.0中,从键盘输入了 p,e 然后这三个字符存放在键盘输入缓冲区中,第一个控制符%c匹配了'p',格式控制字符串中的','匹配键盘输入缓存区的','第二个控制符%c匹配了'e'
我想请问,结束输入是因为缓存区中没有字符了还是因为最后敲了回车键?
还有就是为什么在2012中总是出错?是跟第三个边界检测的参数有关吗?








