sscanf的用法?为什么在vs2013中用c编程时不能用scanf_s函数输入字符串了?

2小时前 (04:14:51)阅读2回复0
kewenda
kewenda
  • 管理员
  • 注册排名1
  • 经验值377960
  • 级别管理员
  • 主题75592
  • 回复0
楼主
为什么在vs2013中用c编程时不能用scanf_s函数输入字符串了?如果在格式字符串(也就是 scanf_s 的第一个参数中)出现了空白字符(空格、\n、\t之类),在这段代码中 scanf_s 会等到输入中出现非空白字符才会返回。
  1. sscanf的用法?
  2. 为什么在vs2013中用c编程时不能用scanf_s函数输入字符串了?
  3. was not declared in this scope怎么解决?

sscanf的用法?

scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s



简单地说:如果在格式字符串(也就是 scanf_s 的第一个参数中)出现了空白字符(空格、\n、\t之类),那么 scanf_s 会吃掉输入中所有接下来的空白字符。也就是说,在这段代码中 scanf_s 会等到输入中出现非空白字符才会返回。

---------------- 分割线 ----------------

如果要权威的话那么给出标准原文:

sscanf的用法?为什么在vs2013中用c编程时不能用scanf_s函数输入字符串了?

C11 7.21.6.2 fscanf 函数

---------------- 分割线 ----------------薛非的这个解释太离谱我竟不知道应该从哪里开始吐槽……(↑其实我觉得这个是高级黑

为什么在vs2013中用c编程时不能用scanf_s函数输入字符串了?

带“_s”后缀是为了让原版函数更安全:scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节,而scanf_s是visual studio中加入的完善版函数,可防止这类引用到不存在的元素的情况发生。

而你的代码是在VS中编译的,找不到vS下的函数,所以用不了。

was not declared in this scope怎么解决?

“was not declared in this scope”是一个错误信息,在编译的时候会遇到。其含义为标识符在其出现的地方是未被定义的。出现该错误的时候,会同时把未定义的变量名显示出来。比如如下程序:int main(){ printf("%d",i);//这个i是没定义的。}就会显示一个'i' was not declared in this scope或者类似的错误信息出来。对于变量和函数,如果未定义都会出现这个错误。该错误出现时,需要根据出现该错误的行号及名称,查找对应名称变量或函数的作用,一般有如下几种可能:

1 忘记定义。写代码的时候疏忽了,导致一些变量直接使用但没有定义。只要对应定义相应的函数或变量即可。

0
回帖

sscanf的用法?为什么在vs2013中用c编程时不能用scanf_s函数输入字符串了? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息