VS2005以上版本編譯在其他編譯器下正常通過的C語言程序,你可能會遇到類似如下的警告提示:
error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
原因:因爲C庫的函數,很多函數內部是不進行參數檢測的(包括越界類的),微軟擔心使用這些會造成內存異常,所以就改寫了同樣功能的函數,改寫了的函數進行了參數的檢測,使用這些新的函數會更安全和便捷。
改寫:mkdir改寫爲_mkdir
fopen改寫爲fopen_s
strcmp改寫爲strcmp_s
strcpy改寫爲strcpy_s
解決方法:
1.右鍵工程名-->屬性-->C/C++-->預處理器-->預處理器定義,編輯右邊輸入框加入:_CRT_SECURE_NO_WARNINGS 應用、保存。
或者:右鍵工程名-->屬性-->C/C++-->命令行-->附加選項,加入 \D "_CRT_SECURE_NO_DEPRECATE"。
2.直接改寫函數
例如:FILE *pFile=fopen("1.txt", "w");
改爲:
FILE* pFile;
fopen_s(&pFile, "1.txt", "w");
讀寫模式: