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

Visual Studio 2013 C 語言常見報錯:參數過少與 _s 安全函數

     編輯:程式設計綜合問答

錯誤一:參數過少

scanf("%d", &a);  // 正確:兩個參數
scanf("%d");      // 錯誤:缺少 &a,編譯器報「參數太少」

檢查格式字符串中 % 佔位符數量,與後續參數一一對應。

錯誤二:_s 後綴函數

VS 2013 默認啟用 安全 CRT,建議使用帶 _s 後綴的安全版本:

標準函數安全版本額外參數
scanfscanf_s緩衝區大小 (針對 %s/%c/%[ )
strcpystrcpy_s目標緩衝區大小
strcatstrcat_s目標緩衝區大小
sprintfsprintf_s目標緩衝區大小
fopenfopen_s返回錯誤碼,指針作輸出參數

scanf_s 正確用法

char buf[100];
scanf_s("%s", buf, (unsigned)sizeof(buf));  // 必須傳大小
scanf_s("%c", &ch, 1);                      // %c 也需大小

禁用安全檢查(不推薦)

#define _CRT_SECURE_NO_WARNINGS  // 放在所有 #include 之前
#include <stdio.h>
// 現在可用 scanf, strcpy 等不帶 _s 版本

最佳實踐

  • 新代碼統一用 _s 版本,養成緩衝區大小意識。
  • 跨平台項目用標準函數 + 手動邊界檢查,或封裝安全包裝器。
  • 編譯器警告等級設為最高 (/W4 或 -Wall -Wextra)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved