void main() { int tmp; printf("请输入需要查找的数值\n"); scanf("%d",&tmp); system("pause"); }
走同样的路,发现不同的人生
c:code二分找出二分查找source.cpp(11): error C4996: 'scanf': 此函數或變數可能不安全。考慮使用 scanf_s 代替。若要停用棄用,請使用 _CRT_SECURE_NO_WARNINGS。詳細資訊請參閱線上說明。 1> c:program files (x86)microsoft Visual Studio 12.0vcincludestdio.h(283) :請參閱「scanf」的聲明
英文可以的話,你應該可以看懂編譯器的提示,從vs某個版本開始,原始的stdio中的絕大多數輸入輸出函數例如printf都被標記上了unsafe,以前是warning,有可能是你開了-Wall,也可能是現在直接強制error了,換成printf_s這樣的安全版本就可以了,用法基本上類似,詳情可以查閱msdn
樓上寫的都不是重點,重點在於C++11對於字符串嚴格的溢出檢查解決:你至於要把scanf換為scanf_s就行
頭檔
vs2013有強制的安全檢查,scanf屬於不安全函數,在c+11 標準中推薦使用scanf_s,不想使用的話就可以在頭部最開始的地方#define _CRT_SECURE_NO_WARNINGS 跳過安全檢查!
c:code二分找出二分查找source.cpp(11): error C4996: 'scanf': 此函數或變數可能不安全。考慮使用 scanf_s 代替。若要停用棄用,請使用 _CRT_SECURE_NO_WARNINGS。詳細資訊請參閱線上說明。
1> c:program files (x86)microsoft Visual Studio 12.0vcincludestdio.h(283) :請參閱「scanf」的聲明
英文可以的話,你應該可以看懂編譯器的提示,從vs某個版本開始,原始的stdio中的絕大多數輸入輸出函數例如printf都被標記上了unsafe,以前是warning,有可能是你開了-Wall,也可能是現在直接強制error了,換成printf_s這樣的安全版本就可以了,用法基本上類似,詳情可以查閱msdn
樓上寫的都不是重點,重點在於C++11對於字符串嚴格的溢出檢查解決:你至於要把scanf換為scanf_s就行
頭檔
vs2013有強制的安全檢查,scanf屬於不安全函數,在c+11 標準中推薦使用scanf_s,不想使用的話就可以在頭部最開始的地方#define _CRT_SECURE_NO_WARNINGS 跳過安全檢查!