C语言求解 main() {int a;char c1; scanf("%4d%3c",&a,&c1); printf("%d,%c\n",a,c1);}

诺输入“123456,abc<回车>",结果是1234,5为什么?

问题出在 "%4d%3c" ,%4d限制 int a只取了4位“1234”;char只占1B,所以只取了‘5’,这个5是作为字符型输入的,剩余内容还在输入缓冲区里,如果这时你再进行输入操作,可能陷入死循环;

scanf语句“ ”中除了格式占位符外最好不要加其他任何东西,更不要对输入进行限制,因为在输入缓存区被读空前进行输入操作一般都会出错
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-31
scanf("%4d%3c",&a,&c1);//因为这句

改为

scanf("%d %c",&a,&c1);

第2个回答  2013-05-31
%号后面是长度设置
相似回答