C语言输入scanf

输入scanf和输出printf有很多相似的地方,但差别也很大,出错的地方也更多。

,什么时候加 & 取地址符号?

例如:int x=2;int *p=&x;int a[10];

scanf("%d",&x);//正确

scanf("%d",p); //正确

scanf("%d",a); //正确

scanf("%d",&a[0]); //正确

scanf("%d",x); //错误

scanf("%d",&p);//错误

scanf("%d",*p);//错误

scanf("%d",a[0]); //错误

以上需要明确的是,语法定义后面是地址,指针p即&x(x的地址),数组名a也是地址(首地址,a[0]的地址),所以前4行正确,其他的错误。

二,有多个输入值的情况。

例如:int a,b;

scanf("%d,%d",&a,&b);//终端输入:12,34

两个%d中间可以是逗号或者空格隔开,在输入数值的时候也是中间加逗号或者空格。有同学经常写成scanf("%d%d",&a,&b);这样呢也没有错误,但是注意终端输入时在两个数据之间可以用一个或多个空格、tab 键、回车键分隔。如果没有符号隔开,你输入的是a=1,b=234,还是a=123,b=4,还是别的。或者指定输入的长度(考试重点):

终端输入:1234567

scanf("%2d%4d%d",&x,&y,&z);

x为12,y为3456,z为7

终端输入:1 234567 由于1和2中间有空格,所以只有1位给x

scanf("%2d%4d%d",&x,&y,&z);

x为1,y为2345,z为67

注意,不可以指定float的长度:scanf("%7.2f",&f);//错误

三、特殊的格式化输入

scanf("a=%d,b=%d",&a,&b); 考试超级重点!

这样写代码是没有错误的,但一定要记住是以第一部分的格式在终端输入数据。考试核心为:一模一样。在黑色屏幕上面输入的为:a=12,b=34才可以把12和34正确给a和b 。有一点不同也不行。

scanf("%d%d%*d%d",&a,&b,&c); 跳过输入的第三个数据。即输入4个数值,abc分别对应第1、2、4个数值。

四、输入时候字符和整数的区别(考试超级重点)

scanf("%d",&x);这个时候输入1,特别注意表示的是整数1

scanf("%c",&x);这个时候输入1,特别注意表示的是字符‘1’,使用数值计算的时候是ASCII为整数48。

五、新版VS报错:scanf

如代码正常,报错:返回值被忽略: "scanf"

原因:在ANSI C中没有scanf_s(),只有scanf(),但是scanf()在读取时不检查边界,所以可能会造成内存泄露。于是Microsoft公司在VS中提供了scanf_s(),如果想继续使用scanf这个不安全的函数以下方法可以解决。

方法一:在文件顶部添加代码:#pragma warning(disable:4996) 即可

方法二:错误提示的原因在与vs中的SDL检查;关闭步骤右键单击工程文件-->属性--------> c/c++ ------>所有选项------------> SDL检查选项改为 否

方法三:把 scanf 换为scanf_s。


学习有困难怎么办,快来加入微信群和大家交流吧。为避免闲杂人等加群,维持微信群良好的学习讨论环境,加群需要验证,请搜索群主微信号:qq1146595625,备注填写一个你认为的C语言难点即可。

计算机等级考试二级C语言,资源交流、问题讨论群。

欢迎分享高质量有价值的学习资源。

提问请说明遇到的问题、不明白的地方,最后附代码文本;直接发题目要答案的、图片不清不好辨别的,可能会被无视。

请勿发送无关链接、影响他人等,违者踢出。

本文分享自微信公众号 - 计算机二级C语言(gh_044a0595bf44),作者:计算机二级C语言

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 4寒假专辑:二、数据输入、输出

    1、使用printf和scanf函数时,要在最前面加上#include“stdio.h”

    用户6755376
  • 全国二级C知识点总结3-数组

    A)int num[0…2008]; B)int num[];

    用户6755376
  • C语言带参数的宏定义:#define f(X) ((X)*(X))

    在以上知识点总结7里面,有很多同学对宏定义的理解还不是很透彻,今天以一个例题深入分析一下。没复习到的同学可以查看上面链接先熟悉一下。

    用户6755376
  • 【答疑释惑】C语言中 scanf_s和 scanf 区别是什么?

    今天的答疑解惑语音版: 1 scanf: 与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdi...

    程序员互动联盟
  • 基础知识 | 每日一练(111)

    学生:为什么 char s[20]; scanf("%s", s); 不用 & 也可以?

    闫小林
  • scanf函数与scanf_s函数

    landv
  • 基础知识 | 每日一面(80)

    读者:为什么 char s[30]; scanf("%s", s); 不用 & 也可以?

    闫小林
  • ElasticSearch配置外网访问,开放9200端口

    十里桃花舞丶
  • python3 调用百度翻译API翻译英文

    py3study
  • AAAI 2019 | 自动机器学习计算量大!这种多保真度优化技术是走向应用的关键

    作者:Yi-Qi Hu, Yang Yu, Wei-Wei Tu, Qiang Yang, Yuqiang Chen , Wenyuan Dai

    机器之心

扫码关注云+社区

领取腾讯云代金券