C语言scanf函数的格式控制问题

为什么在读字符函数(scanf)中首位置(%前)加入一个空格就可以吃掉输入的回车和空格符号?

例:
若输入为:
A B(回车)
用:
scanf ( "%c%c",&ch1,&ch2 );
printf( "%c %c",ch1,ch2 );
则输出为:A (回车)
用:
scanf ( " %c %c",&ch1,&ch2 );
printf( "%c %c",ch1,ch2 );
则输出为:A B

scanf ( "%c%c",&ch1,&ch2 );
printf( "%c %c",ch1,ch2 );
表示你读入的字符是连续读入的,而:
scanf ( " %c %c",&ch1,&ch2 );
printf( "%c %c",ch1,ch2 );
则声明了你在读字符的时候会用一个空格隔开,所以空格没有被读入。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-11
空格的ASCII码值为32,scanf ( "%c%c",&ch1,&ch2 );这样输入的话空格也会被当作输入的值而被接收,scanf ( " %c %c",&ch1,&ch2 );写成这样,则声明输入一个字符必须输入空格隔开,所以空格没有被当作输入的值接收。本回答被网友采纳
第2个回答  2013-11-11
不是吃掉回车和空格符,是它把空格符给当做%c给了ch1
第3个回答  2013-11-11
在scanf语句中空格是输入的意思,getcher可以吧空格当一个字符。
相似回答