-
這個想法沒有錯。 估計是檔名長度問題。 如果使用的是早期構建平台,則檔案主名稱不應超過 8 個字元,副檔名不應超過 3 個字元。 *DAT很好......
-
您應該像這樣對字串進行子初始化:
char fname[ 250 ] = ;
char namein[ ]= "";
最近,C 標準庫引入了該函式的安全版本,為了穩定性起見,應該像這樣編寫
file * in = null;
file * out = null;
fopen_s( &in, fname, "r" );
if( null != in )
todo:在此處新增檔案操作
fclose( in );
in = null;
-
char namein=;
gets(fname);輸入 dwellstrcat(fname,namein);
in=fopen(fname,"r");如果要批量處理,請開啟它。
為檔案命名並在迴圈中逐個開啟它們。
-
什麼情況,你什麼都看不見,這是怎麼回事?
-
1. 建立乙個專案以使用 fopen 函式。
2. 包括需要使用的標頭檔案。
3. 進入 tmain 功能。
4. 在 MSDN 上,檢視 Fopen 函式的原型。
5. 進入 fopen 功能。
6. 定義 file 型別的指標變數 f 並接受返回值。
7. 使用 if 語句確定檔案是否開啟成功。
8. 按快捷鍵 F5 執行程式並檢查結果。
-
如果開啟它進行讀取,則檔案不存在,或者檔案路徑錯誤,或者無法訪問該檔案。
如果開啟寫入,是否允許寫入資料夾,以及檔案是否存在,但具有寫保護。
file *fp;
fp = fopen(..
您可以使用返回的 fp 來判斷開啟是否成功:if (!fp) printf("open error!");
-
in = fopen("d:\\","r");
out = fopen("d:\\","w");
追問:為什麼不給陣列加轉義字元呢?
跟進:當你使用scanf函式時,編譯器會在你輸入時自動認為是字元'\'
但是字串 “d: ” 內的 ' ' 被認為是轉義字元的標誌。
這是它們之間的區別。
-
轉義字元加乙個”。
-
scanf 輸入為 d: d:
更改為 d: 和 d:
-
in = fopen("d:\","r");
out = fopen("d:\","w");*請勿在D盤下新增檔名。 txt。
-
C fopen 函式用於開啟檔案。
函式原型:file * fopen(const char * path, const char * mode);
引數:路徑字串型別,表示檔案所在的路徑,包括檔名。
模式開啟檔案
返回值:開啟檔案時,返回指向流的檔案指標。 如果檔案無法開啟,則返回 null,錯誤儲存在 errno 中。
mode:r 以唯讀模式開啟檔案,該模式必須存在。
R+ 以讀寫模式開啟檔案,並且該檔案必須存在。
RB+ Read Write 開啟乙個允許讀取和寫入資料的二進位檔案,並且該檔案必須存在。
w 開啟乙個只寫檔案,如果檔案存在,檔案長度會清空為0,即檔案內容會消失。 如果該檔案不存在,請建立該檔案。
W+ 開啟乙個可讀可寫的檔案,如果該檔案存在,則檔案長度清空為零,即檔案內容消失。 如果該檔案不存在,請建立該檔案。
a 以附加方式開啟只寫檔案。 如果檔案不存在,則建立檔案,如果檔案存在,則將寫入的資料新增到檔案末尾,即保留檔案的原始內容。 (保留 EOF 字元)。
A+ 以另一種方式開啟讀寫檔案。 如果檔案不存在,則建立檔案,如果檔案存在,則將寫入的資料新增到檔案末尾,即保留檔案的原始內容。 (不保留原始 EOF 符號)。
WB 僅寫入、開啟或建立新的二進位檔案; 只允許寫入資料。
WB+ 讀寫開啟或建立允許讀取和寫入的二進位檔案。
AB+ 讀寫開啟乙個二進位檔案,允許讀取資料或將資料附加到檔案末尾。
示例:包括
#define f_path "d:\\myfile\\"
int main(void)
fclose(fp);
fp=null;您需要指向 null,否則它將指向原始開啟的檔案位址。
return 0;}
-
你試試看,新增:
#include
讓我們看看這個錯誤是否會被消除。
-
如果讀取了它,則 fopen 的第二個引數應該是"r",如果是 write,則第二個引數應為"w",你寫"t"你想說什麼?
好好看看有哪些選項可用於開啟檔案,此外,沒有乙個"t"
直接使用"r"不要"rt"
-
我不那樣用!!
rt“唯讀開啟文字檔案,只允許讀取資料。
wt“只寫開啟或建立文字檔案,只允許寫資料”at“追加文字檔案,把檔案末尾的資料”rb“寫成唯讀開啟二進位檔案,只允許讀取資料。
wb“只寫開啟或建立二進位檔案,只允許寫資料”ab“追加二進位檔案開啟二進位檔案,在檔案末尾寫資料”rt+“讀寫開啟文字檔案,允許讀寫。
WT+“讀取和寫入以開啟或建立允許讀取和寫入的文字檔案。
at+“ read-write 開啟乙個文字檔案以允許讀取,或將資料附加到檔案末尾 ”RB+“ 讀寫開啟乙個二進位檔案以允許讀取和寫入。
WB+ 讀寫開啟或建立允許讀取和寫入的二進位檔案。
AB+ 讀寫開啟乙個二進位檔案,允許讀取資料或將資料附加到檔案末尾。
注意:對於文字檔案的操作,我們可以在不新增字母 t 的情況下使用“r”、“w”、“a”、“a+”,但是沒有像您這樣只有乙個“t”的表示。
另一種可能性是程式找不到你的檔案,所以你把它放在專案的根目錄下,把 fp=fopen("","r");改變這個地方。
-
主要是下面這句話,if((fp1 = fopen("e:編譯原理","r")) == null) 開啟並測試檔案。
由於這是以讀取方式開啟的,因此請確保此檔案的路徑中有 e: Compilation Principle,否則會出現錯誤。
第二個是以寫入模式開啟它,這個檔案會自動建立。
-
我認為可能是路徑錯誤,僅僅因為您的程式和您想要一起操作的檔案並不意味著它是正確的路徑。
-
你的程式,fopen函式沒有錯誤,唯一可能的問題是開啟fopen後,沒有判斷檔案控制代碼是否有效,而當fclose在下面時,如果控制代碼無效,那麼就會出現錯誤。
-
增加容錯判斷能力。
分別檢查 in 和 out 是否為 null
-
是檔案路徑有問題嗎?
-
檢視返回值是否為 null。
例如:if ( fin = fopen(namein,"rb" ))== null )
例如:fp = fopen("","r");
if (!fp) printf("fopen error !");
-
fopen 函式返回乙個 file 型別的指標,如果檔案被開啟,則返回值為空,如果存在,則返回指向該檔案的指標,如果是新檔案,則返回值為指向新檔案的指標,您可以使用該指標讀取和寫入該檔案。
至於決定是讀還是寫,fopen的第二個引數由你來決定,也就是說,由你來決定。
示例:檔案 *fp;
fp=fopen("d:\\","r");
r"代表讀到,如果 D 盤下確實有這個檔案,FP 是指向該檔案的指標,如果它不存在,則它是空的。
fp=fopen("d:\\","w");
w"表示寫入,返回值是指向新建立的檔案的指標。
-
如果開啟失敗,將返回 null
-
使用 system() 將路徑寫入其中。 例如:d:1 2 3 4
system("d:\\1\\2\\3\\4\\");這將允許您開啟文字檔案。 fopen 是將檔案的內容載入到記憶體中。
你能說清楚嗎,我不知道你的意思。 是否要在 main 函式中呼叫乙個函式,然後不知道如何定義被呼叫的函式? 如果是這樣的話,我可以告訴你。 >>>More
函式是否被外部引用不是一成不變的,兩者之間沒有必然的相關性。 此外,如果某個函式被指定為靜態函式,則應在標頭檔案中將其宣告為靜態函式,否則其他人在使用庫時會誤用它。