scanf()混合输入字符和数字时遇到的问题 | 您所在的位置:网站首页 › C语言输入语句如何输入中间 › scanf()混合输入字符和数字时遇到的问题 |
初学者使用scanf()读取混合数字和字符时会遇到以下的现象: #include #include int main() { int a; char c; scanf("%d%c",&a,&c); printf("a=%d\nc=%c",a,c); system("pause"); return 0; }输入:10+enter 程序不让你输入字符就退出输入环节了。 输出:奇异的事情发生了,仔细观察一下在代码中我并没有在printf()里面添加“\n”,但是它却打印了一个回车符。 %d格式输入,默认分隔符是所有的空格、回车、制表(即它不会读取这些,会直接跳过); %c格式输入,则按ASCII字符考虑,无分隔符。可能会受到之前输入的影响。 %s 是 字符串格式,默认分隔符是所有的 white-spaces,输入后自动加入结束符"\0"。 scanf()函数是从缓冲区读取数据(缓冲区中存储来自标准输入(stdin)的数据)。读取缓冲区的一个数据,就删除一个,直至缓冲区是空的,就阻塞之,等待键盘输入;并且scanf还能对数字输入忽略先导的空白符,如\n\t和空格等(注意,对字符输入并不忽略先导字符,这个也是很自然的道理,因为\n\t和空格在字符中都是合法的字符)。 知道这些原理之后就可以找出解决方案了: 可以将数字与字符都输入之后再按下enter;可以将代码中输入的顺序进行交换(先输入字符,再输入数字)。 |
CopyRight 2018-2019 实验室设备网 版权所有 |