scanf()函数是通过终端格式化输入函数,它从标准输入设备(键盘)读取输入信息。可以读入任何固有类型的数据并自动把数值转变成适当的机内格式。
例1.

#include<stdio.h>
int main()
{int a, b, c;scanf("%d%d%d", &a, &b, &c);printf("%d,%d,%d\n", a, b, c);system("pause");return 0;
}

支持以下几种输入



所以:当使用"%d%d%d"这种输入格式时,输入可以是一个空格或者多个空格、tab键、回车键分割。输出都是正确的。
例2.

#include<stdio.h>
int main()
{int a, b, c;scanf("%d,%d,%d", &a, &b, &c);printf("%d,%d,%d\n", a, b, c);system("pause");return 0;
}

允许的输入方法:


所以:"%d,%d,%d"格式与"%d%d%d"格式基本相同,不同之处在"%d,%d,%d"这种格式在输入时“,”一定要紧跟输入的数字。
这里输入的","一定要是英文的
例3.

int main()
{int a, b, c;scanf("a=%d,b=%d,c=%d", &a, &b, &c);printf("%d,%d,%d\n", a, b, c);system("pause");return 0;
}


这里输入也要相互对应
例4.

#include<stdio.h>
int main()
{char a, b, c;scanf("%c%c%c", &a, &b, &c);printf("%c,%c,%c\n", a, b, c);system("pause");return 0;
}

这里输入时存在空格,换行等转义字符问题。因为在"%c"输入时,空格和转义字符均作为有效字符。
例如:

这说明在接收时将空格作为一个字符进行接收了(a->1,b->" ",c->2),其余的被丢弃。
还有类似的问题:

#include<stdio.h>
int main()
{int a;char c;scanf("%d", &a);scanf("%c", &c);printf("a=%d,  c=%c,\n", a, c);printf("c=%d\n", c);system("pause");return 0;
}


这里输入:1回车就会出现如上结果,
这是因为scanf()从键盘接受数据将回车[\n]也接受了,所以c=’\n’,最后%d输出c的值就是10;
解决办法:

1.在接收第二个数之前清空缓冲区,fflush(stdin);getch();getchar();随便一个都可以,fflush(stdin)是全部清空,getchar()是清空一个字符,如果缓冲区还有多余的字符则会被正常使用,
2.在%c之前加入空格,空格可以吸收回车符、空格。

加getchar()

#include<stdio.h>
int main()
{int a;char c;scanf("%d", &a);getchar();scanf("%c", &c);printf("a=%d,  c=%c,\n", a, c);printf("c=%d\n", c);system("pause");return 0;
}


加空格

#include<stdio.h>
int main()
{int a;char c;scanf("%d", &a);scanf(" %c", &c);printf("a=%d,  c=%c,\n", a, c);printf("c=%d\n", c);system("pause");return 0;
}

例5
scanf()函数不能正确接收有空格的字符串问题。

 char arr[20];scanf("%s", arr);printf("%s", arr);system("pause");return 0;


在scanf()函数接收输入数据时,遇到以下问题结束一个数据的输入:

1.遇见空格、回车、跳格
2.遇见宽度
3.遇见非法输入

所以不能成功接收有空格的字符串。
解决方法:
使用%[ ](扫描字符集合),可以用来进行多个字符串的输入,并对结束符进行自定义。对于%[ ]可以用^+结束标志(可以使任意字符,代表着输入这个字符就终止对字符串的读取)。

char arr[20];scanf("%[^\n]", arr);printf("%s", arr);system("pause");return 0;

scanf用法及常见输入错误问题相关推荐

  1. html前端输入错误,前端:常见的6种HTML5错误用法

    一.不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的等价于 --具体地说,就是直接用作替代品(用于样式).在XHTML或者HTML4中,我们常看到这样 ...

  2. 英语常见介词错误用法,你有犯过吗?

    英语常见介词错误用法,你有犯过吗? 1:错:come to here. 对:come here. 过来. here ,there,home之类的副词,前面不用介词in ,at,(但可以加from,比如 ...

  3. MySQL 性能优化:8 种常见 SQL 错误用法!

    声明:转载自 MySQL 性能优化:8 种常见 SQL 错误用法! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是 ...

  4. 避免常见的6种HTML5错误用法,避免常见的6种HTML5错误用法

    一.不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的等价于 --具体地说,就是直接用作替代品(用于样式).在XHTML或者HTML4中,我们常看到这样 ...

  5. 8种常见SQL错误用法

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:https://dwz.cn/cgAPOWPx 1.LIMIT 语句 分页查询是最常用的 ...

  6. 你应该避免的8种常见SQL错误用法!

    来源:https://dwz.cn/cgAPOWPx 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方. 比如对于下面简单的语句,一般 DBA 想到的办法是在 type ...

  7. 8 种常见SQL错误用法,你千万别犯!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 来源:https://yq.ali ...

  8. 8种常见SQL错误用法,你犯过几个?

    来源:https://yq.aliyun.com/articles/72501 高考和端午小长假一溜烟的功夫就全过完了,新的一周,让我们迎着清晨的阳光,继续前行. 1.LIMIT 语句 分页查询是最常 ...

  9. mysql根据排序取前百分之二十_MySQL 性能优化 MySQL常见SQL错误用法

    1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样 ...

最新文章

  1. java 匿名内部类
  2. 我为中国第一张火星照片做鱼眼矫正
  3. 推荐一本书《网络机器人java编程指南》
  4. memcached 相关
  5. 三个线程按顺序输出数字
  6. [Leetcode][第557题][JAVA][反转字符串中的单词 III][遍历][String函数]
  7. 深度学习之Image captioning的评分指标篇(BLEU、CIDEr)
  8. 【spring】常用注解作用归纳
  9. android pcm数据格式,android 实时PCM数据编码成AAC
  10. 《JAVA程序设计基础(第3版)实验指导》pdf 附下载链接
  11. Springboot整合Drools规则引擎
  12. matlab解决线性规划问题
  13. 供应链金融——研究结果总结
  14. Linux设置串口波特率等参数
  15. 鬼谷八荒先天气运修改器
  16. 取消磁盘介质写入保护
  17. 插入安装光盘并重新启动计算机,电脑开机时显示 插入windows安装光盘并重新启动计算机 怎么解决 急救...
  18. 英雄联盟登陆服务器显示外文,英雄联盟手游进不去出现英文怎么办 进不去出现英文解决方法[多图]...
  19. android frida 检测_android逆向__超级好用的使用frida追踪方法
  20. Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)

热门文章

  1. 【Go】Go 语言函数
  2. Spotify 模型
  3. 一款系统优化工具,给Windows调教得服服帖帖
  4. 如何用计算机得出十三分之一,单片机原理及应用期末考试题试卷大全
  5. pic12f1823单片机入门_PIC单片机轻松入门
  6. Ubuntu下安装myeclipse10.7.1
  7. 关于虚拟机搭建Hadoop的几个坑
  8. 存储组网技术详细说明(SAN、NAS、DAS等)【6】
  9. struts2拦截器理论知识
  10. Python基础教程(一)