嘗試通過使用fopen和包含FILE類型的結構來打開文件時,我總是收到分段錯誤。如果這是一個noob問題,那麼對C來說很抱歉。 代碼的結構:使用FILE類型的結構時接收到分段錯誤 - C
typedef struct _FileInternal {
FILE* fp;
char mem[2];
} FileInternal;
// file handle type
typedef FileInternal* File;
代碼文件打開:
File open_file(char *name) {
File a;
fserror=NONE;
// try to open existing file
a->fp=fopen(name, "r+");
if (! a->fp) {
// fail, fall back to creation
a->fp=fopen(name, "w+");
if (! a->fp) {
fserror=OPEN_FAILED;
return NULL;
}
}
return a;
}
試圖 文件f; f = fopen(「newfile.dat」); 返回故障
任何幫助非常感謝!
參見[這是個好主意,'typedef'指針?](HTTP://計算器。 com/questions/750178/is-it-a-good-idea-to-typedef-pointers)考慮這是一個起訴展覽 - 答案是「否」(除非你正在處理函數指針)。 –
另請注意,名稱以下劃線開頭,後面跟着另一個下劃線或大寫字母保留供實施使用。不要創建以下劃線開頭的名字(簡單但安全)。或者閱讀C標準中的§7.1.3保留標識符以及相關標準中的類似章節(例如POSIX)中的全部規則。 –
將typedef指針設置爲使代碼無法讀取(您確實知道指針是什麼,實際對象是什麼,因爲它不是來自聲明)並不是一個好主意。唯一的例外是函數指針。 –