SCANF SCANF_S

今天在看C的教程的时候,用VS2013写了一小段代码 scanf("%f",&w);

提示需要在预编译器里添加 _CRT_SECURE_NO_WARNINGS,  百度了下,发现要么用 scanf_s 来代替scanf,要么就添加这个定义

原因是,VS针对scanf的不安全性,又包了一个scanf_s的函数 ,定义里,多了一个长度的参数, scanf_s("%s",buf,sizeof(buf));

这样不会导致内存溢出错误(比如只能接受4个长度的数组,输入的时候却输入了6个长度)

(我也没明白,这个溢出会有什么异常)

GCC里直接编译,scanf,不会有错误提示的,这个错误是Windows专有的.

SCANF SCANF_S

时间: 2024-10-12 02:42:32

SCANF SCANF_S的相关文章

scanf() scanf_s() 区别

写博愿意:这几天由于小学期的缘故,接触到了好多C代码,在VS2013中编译的时候,遇到了如下问题: 错误 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\revenge\d

poj1256 Anagram

Anagram Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18307   Accepted: 7452 Description You are to write a program that has to generate all possible words from a given set of letters. Example: Given the word "abc", your program s

poj3132 Sum of Different Primes

Sum of Different Primes Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3293   Accepted: 2052 Description A positive integer may be expressed as a sum of different prime numbers (primes), in one way or another. Given two positive integer

C++中的注解理解

SAL: the Microsoft Source Code Annotation Language. SAL: the Microsoft Source Code Annotation Language. 微软代码注解语言.你可以用sal.h中的宏定义来注释函数的参数和返回值来描述他们的行为. 曾经在Java中使用过注解,现在C++中也有注解了. sal.h - markers for documenting the semantics of APIs  sal.h provides a se

Sicily 14517. Eco-driving

Sicily 14517. Eco-driving 题目 思路 直接看了题解- -: 在0到π之间二分,如果中间值可行,缩小右边界(让最大角尽可能小): 如果不可行,增大左边界(最大角已经不能再小): 重复40次的答案基本和标达无差了: 然而这并没有什么*用: 因为超时了,感觉是Sicily的时间限制不太合理: 你这可有多个cases啊: 直接用题解标达都没有办法过的: 于是: 我祭上了标达. 代码 标达: #include <stdio.h> int main() { printf(&quo

【VC】warning C4996: &#39;XXXX&#39;: This function or variable may be unsafe.

关于VS系列使用 Unicode 格式产生以上警告: warning C4996: 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. MSDN Generic-Text Routine Mappings TCHAR.H

poj3363 Annoying painting tool

Annoying painting tool Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1736   Accepted: 1165 Description Maybe you wonder what an annoying painting tool is? First of all, the painting tool we speak of supports only black and white. There

C语言杂谈(一)scanf()、scanf_s()与错误 C4996

错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误.有如下一段简单的代码: #include "stdio.h" int main(void) { int i; printf("Input i\n"); scanf("%d", &i); printf("i is %d",

scanf 和 scanf_s

scanf 和 scanf_s scanf()函数是标准C中提供的标准输入函数,用以用户输入数据 scanf_s()函数是Microsoft公司Visual Studio开发工具提供的一个与scanf()功能相同的安全标准输入函数 从vc++2005开始,VS系统提供了scanf_s().在调用该函数时,必须提供一个数字以表明最多读取多少位字符. 原因和区别 scanf()在读取数据时不检查边界,所以可能会造成内存访问越界: 例如:分配了5字节的空间但是用户输入了10字节,就会导致scanf()