2
我想創建文件並在其上寫入一些數據,但是當我運行以下代碼時,程序運行出錯:錯誤1錯誤C2664:'errno_t fopen_s(FILE **,const char * const char *)':無法將參數1從'FILE *'轉換爲'FILE **'閱讀文件錯誤C_language
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
FILE *myFile;
int main()
{
int age;
age = 24;
fopen_s(myFile,"C:\\inetpub\\wwwroot\\DATA.EMP", "w");
if (myFile == 0){
printf("Error opening the file\n");
exit(1);
}
fprintf(myFile, "I am %d years old \n", age);
fclose(myFile);
getchar();
return 0;
}
可能是什麼原因?
編譯器錯誤告訴你很清楚。 'fopen_s'需要'FILE **'類型的arg 1,並且你給它'FILE *'。嘗試使用第一個參數'&myFile'。 – kaylum
我弄明白了,我已經宣佈爲FILE ** myFile;但它給了我另一個錯誤Degub斷言失敗! 程序:.... al studio 2013 \ projects \ file_pointer1 \ debug \ file_pointer1.exe文件:f:\ dd \ vctools \ crt \ stdio \ fopen.c行:159 表達式:(pfile!= NULL) #包括 #include FILE ** myFile; int main() { \t int age; \t年齡= 24; (myFile,「C:\\ inetpub \\ wwwroot \\ DATA.EMP」,「w」); \t if(myFile == 0){ \t \t printf(「打開文件時出錯\ n」); \t \t exit(1); \t} \t fprintf(* myFile,「我是%d歲以上\ n」,年齡); \t fclose(* myFile); \t getchar(); \t return 0; } –
JFC
不要那樣做!這將編譯,但會在運行時失敗,因爲你已經發現了。 fopen_s調用將決定第一個參數。你必須給它一個指向分配內存的指針。通過使你的變量'FILE **'你傳遞一個無效的指針給fopen_s。按照建議進行:聲明爲FILE *,並將'&myFile'傳遞給'fopen_s'。在進一步研究之前,你可能想刷一下指針。 – kaylum