導航:首頁 > 操作系統 > linuxfopen失敗

linuxfopen失敗

發布時間:2022-09-10 15:23:07

『壹』 linux下fopen總是失敗返回空指針為什麼

Linux下使用fopen函數時,第一個參數盡量用絕對路徑,這樣不容易調用失敗;而且這個路徑必須存在,否則也會調用失敗,可以先判斷這個路徑是否存在,再調用fopen函數。

『貳』 linux fopen函數 打開文件總是失敗

是這樣的再輸入文件路徑的時候要注意:
你的方向錯了應該是"\"這樣的反斜杠而且要輸入兩個反斜杠
因為字元串中的1個反斜杠的意思就是說他是個轉意字元只有\\的時候才會顯示出來1個字元向你的那個路徑就應該寫成fp=fopen("\\mnt\\yaffs\\red.txt")
有興趣共同探討C就給我留言啊

『叄』 fopen 打開文件失敗的問題

fopen 打開文件失敗,有兩個可能的原因:
1,相對路徑錯了;
2,文件名命名的有問題,比如打開fopen("1.txt","r");在相對路徑下創建文本文件的的時候,將該文件命名為1 就可以了,不要加後綴.txt 。

『肆』 linux中,使用fopen函數打開文件失敗

你可以看下,在另一個目錄的文件你是否有訪問許可權,同一個目錄下一般來說,你把他復制過來,這個文件的擁有者(owner)就是你了,你是肯定可以訪問的。每個程序都有一個當前目錄的環境變數,你在shell中執行程序時,shell程序就是你執行的程序的父進程,你的程序從shell程序中繼承了當前目錄,所以你只給定文件名時,當然打開的就是當前目錄下的文件了

『伍』 Linux系統下C語言fopen函數幾個小問題

fopen函數是在當前目錄下打開一個文件,其調用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
「文件指針名」必須是被聲明為FILE 類型的指針變數;
「文件名」是被打開文件的文件名;
「使用文件方式」是指文件的類型和操作要求;
「文件名」是字元串常量或字元數組。
例如:
FILE *fp;
fp=fopen("file a","r");
其意義是在當前目錄下打開文件file a,只允許進行「讀」操作,並使fp指向該文件。

『陸』 fopen 失敗得原因

第一,如果是"rb",就是讀文件,要先確認Tonny.txt在當前編譯的目錄下是否存在
第二,要確認Tonny.txt是否有許可權打開
第三,要確認Tonny.txt是否有程序正在佔用,例如有個程序正在fopen這個文件但沒有fclose這個文件,那麼這個是會打開失敗的

『柒』 fopen函數打開文件失敗

fopen函數用來打開一個文件,其調用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
「文件指針名」必須是被說明為FILE 類型的指針變數;
「文件名」是被打開文件的文件名;
「使用文件方式」是指文件的類型和操作要求。
「文件名」是字元串常量或字元數組。
例如:
FILE *fp;
fp=fopen("file a","r");
其意義是在當前目錄下打開文件file a,只允許進行「讀」操作,並使fp指向該文件。
又如:
FILE *fphzk
fphzk=fopen("c:\\hzk16","rb");
其意義是打開C驅動器磁碟的根目錄下的文件hzk16,這是一個二進制文件,只允許按二進制方式進行讀操作。兩個反斜線「\\ 」中的第一個表示轉義字元,第二個表示根目錄。
使用文件的方式共有12種,下面給出了它們的符號和意義。
文件使用方式

『捌』 若執行fopen函數時發生錯誤,則函數的返回值是

若執行fopen函數時發生錯誤,則函數的返回值是NULL(即0)。

文件順利打開後,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。

執行fopen函數時,如果文件打開成功,則返回該文件結構體的指針,如果 打開失敗(例如,讀打開時文件不存在,寫打開時文件不能創建),則返回NULL(即0)。

這個函數是用來判斷指針是否已經到達文件尾部的。若fp已經指向文件末尾,則feof(fp)函數值為「真」,即返回非零值;否則返回0。

使用void類型指針要注意的幾條規則:

1、void*類型只有地址信息沒有類型信息,所以不能計算偏移。

C/C++中的指針通常來說有兩個屬性:

(1)指向變數。

(2)指向對象的地址和長度。

指針其實就是存儲被指向變數的地址,並不保存其長度;而且存的這個地址僅是變數的首地址,並不是該變數占據內存的所有地址空間。

2、任何指針(包括函數指針)都可以賦值給void指針。

特點:

(1)不需要類型轉換。

(2)只獲得變數/對象地址而不獲得大小。

『玖』 fopen出錯是什麼原因 同樣的函數 在換台機子就不能用了

mode有下列幾種形態字元串: r 打開只讀文件,該文件必須存在。 r+ 打開可讀寫的文件,該文件必須存在。 w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。 w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。 a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。 a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。不過在POSIX系統,包含Linux都會忽略該字元。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此文件許可權也會參考umask值。 返回值 文件順利打開後,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。 附加說明 一般而言,開文件後會作一些文件讀取或寫入的動作,若開文件失敗,接下來的讀寫動作也無法順利進行,所以在fopen()後請作錯誤判斷及處理。 範例 #include<stdio.h main(){FILE * fp;fp=fopen(「noexist」,」a+」); if(fp= =NULL) return; fclose(fp);}原來使用gets(filename) 獲取文件名字 然後fopen(filename,rb) 現在打算用生成的exe文件直接打開文件,在cmd裡面直接輸入:openfile.exe myfile.bat就可以打開文件, 具體做法是:你的main函數要重新寫.原型為 int main(int argc, char* argv[]) argc:參數的個數,(包括程序名文件名) argv:參數表,每一個元素都是一個字元類型的指針 argv[0]就是你的程序文件名指針,argv[1]—argv[n]才是你輸入的參數用法舉例:/************************************************************** 文件名為:mainpara.c,保存在F:\vccode目錄下面 編譯後在F:\vccode\debug 目錄下面生成一個可執行文件mainpara.exe然後進入MS-DOS,敲入: F: 回車, 敲入:cd vccode\debug 回車

『拾』 linux fopen返回NULL,errno為0,用perror輸出的是Success,求解釋。

你直接1:touch /home/1 創建一個文件;
2:vi 1;
3.輸入幾個字母abcde
4:wq//保存
fp = fopen( /home/1, "r");

if(fp==NULL) //如果失敗了
{
printf("錯誤!");
exit(1); //中止程序
}
看看打開能行么,可能是宏定義的問題。
errno 記錄系統的最後一次錯誤代碼。代碼是一個int型的值,在errno.h中定義的,你看到不一定是fopen失敗記錄的值。
手工,望採納!

閱讀全文

與linuxfopen失敗相關的資料

熱點內容
程序員東北大學 瀏覽:426
編譯忽略空字元 瀏覽:117
多店鋪阿里雲伺服器教程 瀏覽:378
單片機求初值 瀏覽:420
安卓機如何在電腦備份圖片 瀏覽:925
ca證書加密機價格 瀏覽:798
天乾地支年份演算法 瀏覽:796
程序員打造的視頻 瀏覽:7
java和php通信 瀏覽:680
為什麼黑程序員 瀏覽:163
程序員男生 瀏覽:456
戴爾文件夾內文件怎麼置頂 瀏覽:582
雲伺服器6m網速 瀏覽:722
vivo手機中國聯通伺服器地址 瀏覽:862
工程總控編譯失敗 瀏覽:707
燕趙紅楓app如何下載 瀏覽:867
php查殺軟體 瀏覽:878
教育管理學pdf 瀏覽:547
伺服器均衡怎麼使用 瀏覽:626
linux中jps 瀏覽:954