scanf函数和占位符

上篇文章简单介绍了scanf函数,本篇文第一部分是对上篇的补充。

我们先看一下为什么vs上无法运行scanf。

这句话意思是VS认为 scanf 不安全,让我们使用 scanf_s 。但是 scanf_s 这个函数不是C语言的标准函数,是VS这个IDE提供的,这就表明在其他编译器上是不能使用 scanf_s 这个函数的。那有什么解决方案呢?

  • 方法一:在当前代码的第一行加上 #define _CRT_SECURE_NO_WARNINGS 1

这样就解决了 scanf 函数不能使用的问题。

  • 方法二:如果每次使用方法一的话就有点麻烦了。如果可以每次打开就都有这个就好了。只要我们安装好VS,我们的安装路径下就会有一个 newc++file.cpp 的文件。所有新建的 .c/.cpp文件都是拷贝 newc++file.cpp 这个文件的!如果能在这个文件上加上 #define _CRT_SECURE_NO_WARNINGS 1 这句话就好了。

     

    • 首先找到这个文件,用记事本打开。
    • 接着输入 #define _CRT_SECURE_NO_WARNINGS 1 这句话,最后保存就完成了。
      • 注意,很可能保存时会出现权限不够的提示,这时候只需要把这个文件拉到桌面上,弄完后在弄回原来的位置就行了。

占位符。scanf常用的占位符如下。

 在这些占位符中,出了%c以外,都会自动忽略起首的空白字符。%c不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。如果要强制跳过字符前的空白字符,可以写成scanf(“ %c,&ch”),即%c前加上一个空格,表示跳过零个或多个空白字符。

接下来说一下占位符%s。它其实不能简单地等同于字符串。它的规则是,从当前第一个非空白字符开始读起,直到遇到空白字符位置。因为%s不会包含空白字符,所以无法读取多个单词,除非多个%s一起使用,这就意味着%s不适合读取可能包含空格的字符串,比如书名或者歌曲名。另外,scanf 遇到%s占位符,会在字符串变量末尾存储一个空字符\0。

scanf 将字符串读入字符数组是,不会检测字符串是否超过了数组长度。所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。为了防止这种情况,使用%s占位符时,应该指定读入字符串的最长长度,即写成%[m]s,其中[m]是一个整数,表示读取字符串的最大长度,后面的字符将被丢弃。

这就是今天的内容啦。消失的下雨天我好想再淋一遍。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值