我在德克萨斯理工大学的编程课上,在上学期学习Python之后,我终于进入了C++课程.当我们今天在课堂上制作一个HelloWorld程序时,我和其他一些人得到了Microsoft Visual Studio 2013告诉我们使用scanf_s而不是scanf,就像教师在他的程序中使用的一样.下面是我的代码.
#includeint main(){ int i,j; float x,y; scanf("input a number: %d %d %f %f", &i, &j, &x, &y); printf("print numbers a : %d \n",i); printf("print numbers a : %10.3d \n", i); printf("print numbers a : %-10.3d", i); fflush(stdin); getchar(); return 0; }
TypeIA.. 9
该_s
系列函数是由微软提供的标准库函数"安全"的变种.许多标准库函数不被认为是安全的,因为它们不允许或不要求用户防止缓冲区溢出.该_s
功能的替代品,允许/需要的缓冲区溢出保护(通常这意味着他们需要一个额外的参数指定要传递的缓冲区的大小,但在的情况下,scanf_s()
它要求的格式字符串包含每个宽度说明%c
,%C
,%s
或%S
参数).
您可以通过_CRT_NONSTDC_NO_WARNINGS
在项目设置中设置define 来禁用这些警告.或者,如果您选择,请切换到这些_s
功能(但请注意,这样做会将您的代码绑定到Microsoft运行时库[或C11;请参阅下面的注释],并使其不可移植).