scanf()混合输入字符和数字时遇到的问题 您所在的位置:网站首页 C语言输入语句如何输入中间 scanf()混合输入字符和数字时遇到的问题

scanf()混合输入字符和数字时遇到的问题

2023-07-24 07:29| 来源: 网络整理| 查看: 265

初学者使用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”,但是它却打印了一个回车符。 在这里插入图片描述 问题解决: scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。 其调用格式通常为: scanf("",); 常用的三种格式:

%d格式输入,默认分隔符是所有的空格、回车、制表(即它不会读取这些,会直接跳过);

%c格式输入,则按ASCII字符考虑,无分隔符。可能会受到之前输入的影响。

%s 是 字符串格式,默认分隔符是所有的 white-spaces,输入后自动加入结束符"\0"。

scanf()函数是从缓冲区读取数据(缓冲区中存储来自标准输入(stdin)的数据)。读取缓冲区的一个数据,就删除一个,直至缓冲区是空的,就阻塞之,等待键盘输入;并且scanf还能对数字输入忽略先导的空白符,如\n\t和空格等(注意,对字符输入并不忽略先导字符,这个也是很自然的道理,因为\n\t和空格在字符中都是合法的字符)。

知道这些原理之后就可以找出解决方案了:

可以将数字与字符都输入之后再按下enter;可以将代码中输入的顺序进行交换(先输入字符,再输入数字)。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有