fopen開啟檔案失敗過程分析

2021-09-20 23:48:37 字數 481 閱讀 4701

場景說明

協助同事解決fopen開啟檔案永遠返回-1的異常情況。在解決問題的時候,先入為主的認為是:檔案路徑出現了字元轉義的問題,根本沒有想到要列印出當前無法獲取到檔案控制代碼的錯誤,是否是檔案路徑不存在。所以一開始就是將\替換為/,然後替換為\\,還是不行。

fprintf(stderr, "%s \n",strerror(errno));結果沒有任何的效果

如下是一段有用的資訊:

fopen內部用了createfile函式,所以fopen呼叫失敗的情況下,也可以使用getlasterror檢視錯誤**。

解決方案:

開啟檔案失敗,呼叫getlasterror()函式,獲取到dword的值是32,然後開啟工具,選擇檢視錯誤碼:程序無法訪問檔案,因為另乙個程式正在訪問該檔案。通過檢視所有的關於該檔案的引用,果然發現確實已經有地方開啟編輯該檔案。

反思:如果是字元轉義,肯定就是無法開啟乙個不存在的檔案,只要通過獲取錯誤碼就可以解決這個問題。

使用C 語言fopen函式開啟檔案失敗

include int main void else return 0 這是一段關於fopen的使用 其中file fopen wxb.txt r 這段 fopen後面接的是 wxb.txt 檔名 r 開啟方式,這是文字方式 wxb跟fopen後面wxb.txt的檔名不一樣,你如果在源 中wxb後面...

檔案的開啟 fopen函式

fopen函式用來開啟乙個檔案,其呼叫的一般形式為 檔案指標名 fopen 檔名,使用檔案方式 其中,檔案指標名 必須是被說明為file 型別的指標變數 檔名 是被開啟檔案的檔名 使用檔案方式 是指檔案的型別和操作要求。檔名 是字串常量或字串陣列。例如 file fp fp file a r 其意義...

檔案的開啟過程分析

系統呼叫 sys open do sys open do filp open open namei path lookup open path lookup intent open 檔案存在直接開啟 path lookup create path lookup intent open 檔案不存在,建...