7、scanf

作者: 无力吐槽果 | 来源:发表于2016-10-23 23:22 被阅读0次

scanf接收用户的输入,printf在进行输出的时候,会有一些隐式的转换,而scanf则完全不会有任何的隐式转换,意味着我们必须时用对应的转换说明,来接收我们想要接收的值,如下图

如果我们想要接收一个字符,必须使用%c,而不能使用其他的,scanf并不会认为输入的数值可以转换,输入的数值并不会被scanf认为是一个字符,就会将他略过,从而寻找合适的转换说明来进行接收,这一点同样适用于浮点数上面,包括字符串,也是一个特殊的存在;

scanf的危险来源于两块:1、里面的转换说明必须一一对应,2、并没有规定读取多少的内容和执行多少代码,别有用心的人可以进行缓冲区溢出攻击,别人就能拿超出规定大小的后面内存做攻击,所以用scanf_s可以很好地解决这个问题

作为一个合格的软件工程师,应该有30%的时间思考如何让写代码,10%的时间写代码,剩余60%的时间调试代码

所有的局部变量的初始值都是0xcccccccc(在Debug版本下),数组赋值的时候,初始化列表,使用一个{}来代表初始化列表,初始化列表经常用于一个容器的初始化,如char数组,将他称之为一个容易,用{0}就是用0来填充所有数组

Expression报错:返回的指针等于NULL,一般是scanf_s(",%d", &i_num);这里少个&符号,&叫做取地址符,scanf_s在使用数组的时候不需要&符号

相关文章

  • 7、scanf

    scanf接收用户的输入,printf在进行输出的时候,会有一些隐式的转换,而scanf则完全不会有任何的隐式转换...

  • 2019-01-05学习一下C呀

    问题1:vs2017中scanf函数报错ANSI C中没有scanf_s(),只有scanf(),scanf()在...

  • scanf和scanf_s的用法

    scanf ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会...

  • C++中关于输入输出的一些坑

    1、scanf和scanf_s    自从装上vs2019后就发现scanf不能用了,一用就报错,要用scanf_...

  • scanf()读取值

    status == scanf("%d", num) scanf()读取num的一个新值;然后检查scanf是否成...

  • 啊哈C

    float:用来存小数。(p27) scanf :输入。(p33) scanf的用法: <助听器scanf>和<扩...

  • 〔杂谈〕关于scanf方法输入字符类型需要加空格问题分析

    关于scanf函数“%c”前需要加空格问题 如图所见,使用scanf(“%c”)和scanf(“ %c”) 分别输...

  • hduoj刷题-2000~2012

    2000 2001 while(scanf("%d",&n)!=EOF)就是while(~scanf("%d",&...

  • scanf

    输入数值printf("输入第一个数值\n");2.定义变量int num1,num2;3.利用scanf函数获取...

  • scanf

    scanf输入double需要在前面加一个修饰符l

网友评论

      本文标题:7、scanf

      本文链接:https://www.haomeiwen.com/subject/ixbkuttx.html