7、scanf

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在使用数组的时候不需要&符号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容