最近在寫乙個程式是涉及到檔案的操作,其中遇到乙個問題是開啟檔案後判斷檔案是否為空,剛開始想到了每次開啟檔案都是向檔案新增資料,就是以a+方式開啟,就想到用ftell函式直接得到當前位置如果不為0則說明檔案不為空,但是這樣程式執行一直沒打到想要的效果,除錯時發現開啟檔案後用ftell函式得到的當前位置值為零,自己不禁產生疑惑,後來翻了下譚浩強的《c程式設計》上面寫著「用a+方式開啟的檔案,原來的檔案不被刪除,位置指標移到檔案末尾」。為了消除疑惑自己寫**測試下,看下具體情況。
測試**:
#include int main(void)執行結果:fp=fopen(fname,"r");
if (fp!=null)
fp=fopen(fname,"a+");
if (fp!=null)
return 0;
}
可以發現用fopen函式開啟檔案時,位置指標都是處在檔案開頭處,包括用a和a+方式開啟,只是在第一次寫時位置指標會移動到檔案末尾處。
檔案的開啟 fopen函式
fopen函式用來開啟乙個檔案,其呼叫的一般形式為 檔案指標名 fopen 檔名,使用檔案方式 其中,檔案指標名 必須是被說明為file 型別的指標變數 檔名 是被開啟檔案的檔名 使用檔案方式 是指檔案的型別和操作要求。檔名 是字串常量或字串陣列。例如 file fp fp file a r 其意義...
fopen開啟檔案失敗過程分析
場景說明 協助同事解決fopen開啟檔案永遠返回 1的異常情況。在解決問題的時候,先入為主的認為是 檔案路徑出現了字元轉義的問題,根本沒有想到要列印出當前無法獲取到檔案控制代碼的錯誤,是否是檔案路徑不存在。所以一開始就是將 替換為 然後替換為 還是不行。fprintf stderr,s n stre...
檔案操作之開啟檔案 fopen函式用法
1.格式 file fp fp fopen filename.txt r 2.說明 第一行定義乙個檔案指標型別的變數fp。第二行開啟乙個檔案,返回乙個檔案指標賦值給fp 若開啟檔案失敗,返回空指標 fopen函式的第乙個引數 filename.txt 是要開啟的檔案的檔名,第二個引數表示檔案開啟模式...