導航:首頁 > 文件教程 > fopen寫入文件

fopen寫入文件

發布時間:2021-11-01 00:08:41

① php fopen 寫入txt失敗

//原型
$f
=
fopen('路徑',
'a+');
fwrite($f,
'內容');
fclose($f);
//可能的原因
1寫入的值是空的
2創建文件夾時,沒有賦予可寫許可權
mkdir($path,
0777);
由於看不到代碼,所以具體的,你自己檢查一下呢

② PHP,如果想要在文件末尾寫入方式打開一個文件,該給fopen()傳什麼參數

$file = fopen("path","a+");
讀寫方式打開,並指向打開文件的末尾

③ 關於利用fopen函數創建文件的問題

函數原型:FILE * fopen(const char * path,const char * mode);

相關函數:open,fclose,fopen_s,_wfopen

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

參數說明:

參數path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。

mode有下列幾種形態字元串:

r 以只讀方式打開文件,該文件必須存在。

r+ 以可讀寫方式打開文件,該文件必須存在。

rb+ 讀寫打開一個二進制文件,允許讀寫數據,文件必須存在。

w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。

w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。

a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)

a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)

wb 只寫打開或新建一個二進制文件;只允許寫數據。

wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。

ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。

wx 創建文本文件,只允許寫入數據.[C11]

wbx 創建一個二進制文件,只允許寫入數據.[C11]

w+x 創建一個文本文件,允許讀寫.[C11]

wb+x 創建一個二進制文件,允許讀寫.[C11]

w+bx 和"wb+x"相同[C11]

例子:

#include<stdio.h>

#defineF_PATH"d:\myfile\file.dat"
intmain(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return-1;//要返回錯誤代碼
}
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址

return0;
}

④ 在C語言中,fopen一個文件 如何能夠在寫入新的數據覆蓋原文件中指定長度的內容

程序示例

程序示例1#include#include //為了使用exit()int main(){char ch;FILE* fp;char fname[50]; //用於存放文件名printf("輸入文件名:");scanf("%s",fname);fp=fopen(fname,"r"); //只供讀取if(fp==NULL) //如果失敗了{printf("錯誤!");exit(1); //中止程序}//getc()用於在打開文件中獲取一個字元while((ch=getc(fp))!=EOF)putchar(ch);fclose(fp); //關閉文件return 0;}注意!初學者往往會犯一個錯誤,即在輸入文件名時不加後綴名,請注意加上!程序示例2[2]#includeFILE *stream, *stream2;int main( void ){int numclosed;// Open for read (will fail if file "crt_fopen.c" does not exist)if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996// Note: fopenis deprecated; consider usingfopen_sinsteadprintf( "The file 'crt_fopen.c' was notopened " );elseprintf( "The file 'crt_fopen.c' wasopened " );// Open for writeif( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996printf( "The file 'data2' was not opened " );elseprintf( "The file 'data2' was opened " );// Close stream if it is not NULLif( stream){if (fclose( stream ) ){printf( "The file 'crt_fopen.c' was not closed " );}}// All other files are closed:numclosed = _fcloseall( );printf( "Number of files closed by _fcloseall: %u ", numclosed );}[3]


⑤ c語言 fopen 無法打開文件寫入

首先確保你 「c:\tc\」這個路徑是存在的
如果存在,那麼把這一行的'\'都換成"\\"

⑥ 【急】fopen()用「rb」「wb」方式讀寫文件與「r」「w」有什麼不同

b是二進制文件的意思。rb打開讀二進制文件,wb打開寫二進制文件。
r 與w是打開普通文件。

⑦ 請教:fopen 能寫文件嗎如何寫。

兩種都可以,不過你最好只使用一種輸入輸出。如只使用stdio或fstream,
fopen對應寫入函數,fwrite(),
fstream對於write成員函數。
FILE *out = fopen("abc.rgb", "wb");
int a;
fwrite(&a, sizeof(int), 1, out);


ofstream out("abc.rgb", ios_base::binary);

out.write(&a, sizeof(int));

⑧ php用fopen,fwrite,fclose等函數將數據寫入文本文件後,如何儲存該數據

fopen打開文件資源的時候,mode參數選擇w,w+或a,a+,如果文件不存在,就會自動創建文件

一般情況建議直接使專用屬file_put_contents,會自動打開文件資源,寫入數據並關閉資源,如果文件不存在會自動創建文件,操作也會簡便很多

詳細信息請參看文檔
http://php.net/manual/zh/function.fopen.php
http://php.net/manual/zh/function.file-put-contents.php

⑨ 用 fopen函數寫入txt文件怎麼寫在頭部

直接寫入是不可能的,不過你可以先用r打開,讀取出內容,關閉文件然後把讀取的內容與B時行合並,當然是B+a,B在前然後再用w打開,把這個內容寫入,把原來的內容覆蓋

⑩ _函數不需要使用fopen()函數打開文件就可以對文件進行寫入操作。

一、C文件操作:
C語言中,文件的操作都是通過一個FILE類型的文件指針進行,也就是說只有通過文件指針,才能調用相應的文件。FILE是一個由系統定義的結構體(定義在stdio.h中),可以存放文件的相關信息。
文件的打開(fopen函數)
文件的操作過程一般為:打開 => 讀/寫 => 關閉。
fopen函數的原型如下:
FILE* fopen(const char* filename, const char* mode);
函數調用就比較簡單了:
FILE* fp;
fp = fopen("file1.txt", "r");
如果打開成功,返回file1.txt文件的指針,如果打開失敗,返回一個NULL指針,所以調用fopen()後我們需要檢查fp的值才進行下一步操作。fopen()的第一個參數為文件名,第二個參數為文件打開方式,含義如下表:
說明: 1. 使用"r"時,如果文件不存在,則出錯。
2. 使用"w"時,如果沒有文件,則創建一個新文件。
3. 使用"a"時,如果希望向文件尾添加數據,則該文件必須存在,否則出錯。
4. "r+","w+","a+"都是可以輸入和輸出數據,但必須遵守上述3點
5. 操作二進制文件時,加上"b"字元,且二進制文件對換行符不會進行轉換,而文本文件會將換行符轉換為回車和換行兩個字元。
文件的關閉(fclose函數)
在使用完一個文件後,若不關閉則會造成系統資源泄漏。使用fclose()關閉文件即可,原型為 int fclose(FILE* fp)。使用:fclose(fp); flose()返回0時為順利關閉文件,否則返回EOF(-1)。
文件的讀寫
1) fputc(), fgetc()分別為從文件流中寫和讀一個字元,原型分別如下:
寫:int fputc(int c, FILE* fp); 讀:int fgetc(FILE* fp); 失敗時均返回EOF
2) fputs(), fgets()分別為從文件流中寫和讀一個字元串,原型分別如下:
寫:int fputs(const char* str, FILE* fp); 例如: fputs("I love this game!", fp);
讀:char* fgets(char* str, int n, FILE* fp); 從流中讀取n-1個字元或讀完一行,參數str用於接收讀取的字元串。注意當讀取一行時,不包括行尾的'\n'字元。
3) fseek() 一般用於二進制模式打開的文件中,功能是定位到流中指定的位置。原型如下:
int fseek(FILE* fp, lont offset, int whence); 參數offset是移動的字元數,whence是移動的基準,取值是:
SEEK_SET 0 //文件開頭
SEEK_CUR 1 //當前讀寫的位置
SEEK_END 2 //文件尾部
4) fprintf(),fscanf()是將數據按格式輸出輸入到文件流中,用法類似printf()和scanf()。原型分別如下:
int fprintf(FILE* fp, const char* format, ...); 它與printf()不同的就是將數據寫到了文件流中,而不是控制台罷了。
int fscanf(FILE* fp, cosnt char* format, ...); 從文件流中按格式讀取,與scanf()不同的就是數據是從文件流中讀取而已。
例如: fprintf(fp, "count=%d", 5); fscanf(fp, "%d", &x);
5) feof()是檢測是否已到文件尾,是返回真,否則返回0,原型是 int feof(FILE* fp);
6) rewind() 則是把當前的讀寫位置回到文件開始,相當於 fseek(fp, 0L, SEEK_SET); 原型: void rewind(FILE* fp);
7) remove() 刪除文件,原型: int remove(const char* filename); 參數為要刪除的文件名,成功則返回0;
8) fread(), fwrite() 它們相當於可將一塊的數據讀出或寫入,相當的方便。原型如下:
size_t fread(void* ptr, size_t size, size_t n, FILE* fp); 從流中讀指定個數的字元,size是每塊的位元組婁,n則是讀取的塊數。
size_t fwrite(const void* ptr, size_t size, size_t n, FILE* fp); 類似的是向文件流中寫入n塊size位元組數的數據。可以看到數據指針為void*型,即可以使用任何類型的指針來替換。例如:
現在一個結構體: struct student_t{char name[16]; int id; int age;}; 創建三個學生的數據並賦值:struct student_t stu[3];
這時,當我們找開文件後(一般是進制模式),可以調用fwrite()將三個學生的數據都寫入到文件中,兩種方式:
for(int i = 0; i < 3; ++i)
fwrite(&stu[i], sizeof(struct student_t), 1, fp);
或者:fwrite(stu, sizeof(struct student_t), 3, fp);
些時,我們調用fread()函數便可很輕松的將剛才寫入的3個學生的數據讀取出來:
struct student_t stus[3];
for(int i = 0; i < 3; ++i)
fread(&stus[i], sizeof(struct student_t), 1, fp);
或者:fread(stus, sizeof(struct student_t), 3, fp); 這樣便可將三個學生的數據讀入到stus變數中了(有木有很方便吶)
注意:如果你發現使用fread()讀取之後,最後一個學生讀取的數據不完全,可能是由於你沒有使用二進制模式打開的原因。
9) 最後是tmpfile()和tmpnam(),前者為生成一個臨時文件,後者為生成一個唯一的文件名,具體使用在此不介紹了。
二、使用C++中的fstream文件流操作類進行文件的讀寫
使用fstream操作文件與使用C庫函數類似,只不過fstream為面向對象方式,或多了上些C++的特性。首先,這里大概有三個流:
fstream為文件輸入輸出流,ifstream為輸入文件流,ofstream為輸出文件流,它們與ostream不同的就流的目的地為文件,而不是控制台。這里只介紹與上述的一些不同點:
1. 打開文件,如可以是 ifstream input_file("file2.txt"); 這樣將會以默認方式打開file2.txt文件並進行讀取。也可使用open()方式打開一個文件,並指定打開方式,例如:
ifstream input_file;
input_file.open("file2.txt", ios::binary);
打開後,可以使用is_open()檢測是否打開成功:
if(input_file.is_open()){},然後可以使用流操作符向文件寫數據了,例如:
input_file << "this is a test line";
input_file << "another info";
另外,這里的文件打開方式在ios空間下:
ios::app 添加到文件尾
ios::ate 把文件標志放在末尾而非起始。
ios::trunc 默認. 截斷並覆寫文件。
ios::nocreate 文件不存在也不創建。
ios::noreplace 文件存在則失敗。
ofstream使用方式類似,讀取一行數據可以使用getline(buf, count), 類型於fgets()。fstream類還提供一個很多其它方法,如fclose()為關閉文件,eof()用於檢測狀態是否已經到了文件末尾。
這里還有兩個類似於上述的fread()和fwrite()函數,是read(), write(),功能和用法類似類似,例如:
output_file.write((const char*)stu, 3 * sizeof(struct student_t));
input_file.read((char*)stus, 3 * sizeof(struct student_t));
注意,這里也需要使用二進制模式打開,否則read的時候最後的上些數據讀不完全。調用上面兩個函數後可以使用bad()來檢測文件流對象是否錯誤,例如,if(input_file.bad()){printf("error when read file\n"); return;},最後input_file.close()即可。
最後,C/C++文件的操作並不復雜,多使用幾次便可熟練掌握,需要注意的就是文件的打開方式,和當用同一個文件指針進行又讀又寫時,注意文件指針位置的移動。

閱讀全文

與fopen寫入文件相關的資料

熱點內容
沈陽企業網站建設要多少錢 瀏覽:714
java數組儲存數據 瀏覽:533
makefile是什麼文件 瀏覽:243
比較不同文件夾的圖片 瀏覽:204
江陰教育app密碼忘記了怎麼辦 瀏覽:323
javautil包 瀏覽:958
隨身wifi無法連接到網路 瀏覽:792
餓了么網路連接斷開提示怎麼關掉 瀏覽:150
怎麼把ai文件存在一個pdf 瀏覽:851
java調用oracle存儲過程數據集 瀏覽:387
zbar源代碼編譯 瀏覽:77
聽壓縮文件小說用什麼軟體蘋果 瀏覽:892
java解析json 瀏覽:432
國外網路客服馬來西亞吉隆坡 瀏覽:362
編程裡面感嘆號是什麼意思 瀏覽:281
妖妖解除限制工具 瀏覽:648
日版蘋果5MD297JA能用嗎 瀏覽:692
qq微雲會員多少錢 瀏覽:559
默認sim卡數據電信什麼意思 瀏覽:180
卡槍代碼 瀏覽:992

友情鏈接