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

C++ fprintf_s 參數錯誤導致無輸出的修正

     編輯:程式設計疑難解答

錯誤代碼

fprintf_s(ofile, "%d", (int *)&data[i]); // 參數類型錯誤

問題分析

  • %d 對應 int,傳入 (int*)&data[i] 是 int* 類型
  • data 定義不明,若為 int data[],應直接傳 data[i]
  • sizeof(data) 在函數參數中退化為指針大小,非數組長度

修正版本

// 假設 data 為 int data[100];
int count = sizeof(data) / sizeof(data[0]); // 正確計算長度
for (int i = 0; i < count; i++) {
    if (fprintf_s(ofile, "%d\n", data[i]) < 0) break; // 直接傳值,添加換行
}

fprintf_s vs fprintf

  • fprintf_s:微軟安全版,參數檢查更嚴格,需 #define __STDC_WANT_LIB_EXT1__ 1
  • 跨平台項目推薦標準 fprintf + 手動緩衝區檢查

完整文件寫入示例

FILE *fp;
errno_t err = fopen_s(&fp, "data.txt", "w");
if (err != 0) return;
for (int val : data) {
    fprintf(fp, "%d\n", val);
}
fclose(fp);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved