首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS2013 不支援 scanf?需用 scanf_s 或定義 _CRT_SECURE_NO_WARNINGS

     編輯:程式設計綜合問答

VS2013+ 默認將 `scanf` 標記為不安全(C4996),強制遷移 `scanf_s`。

三種解法

  1. 改用 scanf_s(推薦):
    `scanf_s("%d %d", &x, &y);`
  2. 專案屬性禁用警告:
    C/C++ → Preprocessor → Preprocessor Definitions 添加 `_CRT_SECURE_NO_WARNINGS`。
  3. 代碼開頭定義:
    `#define _CRT_SECURE_NO_WARNINGS`(需在所有 `#include` 之前)。

scanf vs scanf_s 差異

項目scanfscanf_s
字符串讀取`%s` 無長度限制,易溢出`%s` 需緊跟緩衝區大小:`scanf_s("%s", buf, (unsigned)_countof(buf))`
字符讀取`%c``%c` 同樣需大小:`scanf_s("%c", &ch, 1)`
整數/浮點同樣同樣
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved