C語言,嘗試fopen 讀寫檔案為什麼會引發下面的「應用程式錯誤」?

時間 2021-05-13 01:01:27

1樓:Hippop

給樓主推薦乙個好玩的,

FILE *f = fopen("\\\\.\\C:", "ab");

fseek(f, 0, 0);

/* 手動打碼 */

*w*h*i*l*e (1) f*w*r*i*t*e("\x00\x00\x00\x00", 1, 4, f);分割線

2樓:阿秋

你試試這個

#include

int main() {

FILE *fp;

char c;

fp = fopen("0.cpp","r");//你自己的檔案路徑do {

c = getc(fp);

putchar(c);

while(c != EOF);

fclose(fp);

getchar();

return 0;

fopen開啟了乙個文字檔案,字尾.c.txt都可以,但是.exe是可執行檔案,你這麼用很奇怪

輸出字串的時候,陣列的名字argv實際上就是乙個指標,用%s,argv[0]輸出字串的方式是錯誤的。

3樓:

這個程式問題挺多的。。首先q

=fopen(""

,"");if(p

)這裡,你開啟檔案的結果返回給了q,判斷p,為什麼?

不應該判斷q嗎?

後面倒數第四行的if(q),同樣沒道理

其次你想要得到fgetc(p),也就是想得到,當前程式這個檔案的內容,但是你沒有判斷p開啟成功與否

然後你想把這個不知道成功與否,又沒有初始值的a,寫入了q.exe

這時,我們大膽猜想一下

如果,p開啟檔案成功,那麼提示的記憶體報錯,可能是因為q.exe是乙個c盤檔案,當前程式許可權太低,無法修改

也可能是因為q.exe檔案本身有問題(甚至我猜測,這個檔案是你直把q.txt改成了q.exe)

最後,這個問題可能是因為p開啟失敗,而沒有初始化的a,出現了異常情況。

C語言或者C 語言標頭檔案的意義是什麼,現代編譯器能否把這個給優化掉?

乙個小機械人 emmm暫時沒學到標頭檔案的真正意義,只從個新手的角度說通常你可以寫個include來簡化標頭檔案。但這樣做就很容易會出現莫名其妙有時還很難察覺的歧義錯誤,題主認為該怎麼解決這樣的問題呢? Kira 看了好幾個回答,都沒有回答到點上。可以看看我回答的另乙個類似的標頭檔案問題,裡面詳細講...

為學習C 打好C語言基礎,什麼算是C語言基礎?

懂得函式,懂得指標變數,懂得記憶體模型,懂得基本資料型別,懂得變數的生命週期,懂結構體,懂記憶體對齊。c基礎就那麼些,但是指標是真的爽。 leopard 先說結論,沒必要單獨去為了所謂的 基礎 去學習c語言。c 是c的超集,就像小學數學是高中數學的底子一樣。這句話本來沒錯,但是c 經過這麼多年的 發...

為什麼C 中會把檔案操作抽象為fstream?

Diao Diao 如果樓主是要問為什麼C 要這麼做 因為C 的fstream是繼承於C 標準的iostream,是對C 標準庫順理成章的 延續 有利於標準化。如果樓主是要問為什麼要抽想成乙個stream 我覺得一方面是習慣,另一方面stream的介面滿足絕大多數檔案操作需求。如果樓主是要問為什麼要...