注册 登录
编程论坛 C++教室

各位大佬,小滴又遇到了点麻烦,还请各位大佬指点指点

周昱树 发布于 2020-09-11 20:20, 2632 次点击
小生这厢有礼了,
使用vs2013和在线编辑的结果不一样,但是不知道是语法原因还是编辑器的原因。
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
7 回复
#2
Jonny02012020-09-11 23:45
VS 里把 scanf 改成 scanf_s
#3
apull2020-09-12 12:03
微软认为scanf,printf,fscanf等不安全,自己提供了一套后缀'_s'的函数
#4
周昱树2020-09-12 18:37
回复 2楼 Jonny0201
谢谢大佬指点。O(∩_∩)O
#5
周昱树2020-09-12 18:38
回复 3楼 apull
好的,我知道怎样解决这些问题了。谢谢大佬。
#6
rjsp2020-09-14 10:13
第一,不要贴图。要贴 文字形式的代码 和 文字形式的说明
第二,scanf中的格式化参数不要加"\n",也就是 scanf("%d%d\n" 应当改为 scanf("%d%d"
第三,在VC++中,scanf编译失败的话,建议你在源代码开头加  #define _CRT_SECURE_NO_WARNINGS,而不是使用 scanf_s 等。
因为
scanf_s 虽然加入了C标准,但那是一次欺诈行为。说“欺诈”也许过分,但说“误会”又太轻飘飘了;
scanf_s 虽然加入了C标准,但只是可选的,不是强制必须支持;
scanf_s 虽然加入了C标准,但gcc/clang等所有主流编译器都反对,永远不会去支持这个可选部分的;
scanf_s 虽然加入了C标准,但加入时被修改得好了一点,而这些修改微软却又不肯跟进。也就是说世上只有VC支持scanf_s,但VC支持的scanf_s也不是C标准中的scanf_s。
#7
lin51616782020-09-14 17:29
补充6楼
有必要强调一下
#define _CRT_SECURE_NO_WARNINGS
应该写在#include之前

6楼的描述 "源代码开头加#define _CRT_SECURE_NO_WARNINGS"是正确的
本楼在6楼的描述的基础上 强调 这个开头是指 include 之前
#8
x2777157472020-09-15 20:26
_s要准确一些
1