1.檔案的概述
定義:檔案是指存盤在外部介質(例如磁盤)上的資料的集合
2.檔案操作
2.1 檔案的打開
函式原型:
FILE *fopen(const char *filename,const char *mode) //filename是檔案名,mode是決定檔案的用途
例如:
FILE *fp;
fp=fopen("test.txt","r");//用fp指向讀取的test.txt檔案,因為函式原型中是const char*型別,所以有雙引號
檔案打開方式分為幾類:
“r” 打開一個用于讀取的文本檔案;
“w“創建一個用于寫入的文本檔案;
"a"附加到一個文本檔案;
"r+"或"a+"打開一個用于讀/寫的文本檔案;
"w+"創建一個用于讀寫的文本檔案;
判斷打開有哪種錯誤的函式perror(""):
函式原型是:
void perror(const char *str); //perror()函式列印str(字串)和一個相應的執行定義的錯誤訊息到全域變數errno中.
舉例:
if(fp==NULL){
perror("fp"); //perror函式用于判斷打開檔案出現哪種錯誤
return -1;
}
輸出結果:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DydbDMYo-1611834621626)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210128155913842.png)]
2.2 檔案關閉
fclose(fp),檔案的打開與關閉與記憶體的申請malloc和釋放free一樣;
由于打開檔案后會占據記憶體,且打開檔案有上限,所以就要fclose
函式原型:
int fclose(FILE *p); //fclose關閉檔案,釋放檔案緩沖區的空間,fclose()執行成功時回傳0,否則回傳EOF.
由于無法顯示結果,所以沒有輸出舉例
2.3 檔案的讀寫
讀:(fgetc,fgets)
1.fgetc(fp)
從檔案中讀取一個字符
c=fgetc(fp);
printf("%c",c); //列印fgetc從fp中讀取的字符c
函式原型:
int fgetc(FILE *p); //fgetc讀取成功時回傳*p的下一個字符,如果到達檔案尾或者發生錯誤則輸出EOF
2.fgets:
函式原型:
char *fgets( char *str, int num, FILE *stream );//函式fgets()從給出的檔案流中讀取(num - 1)個字符并且把它們轉儲到str(字串)中.
舉例:
FILE *fp;
fp=fopen("test.txt","r+");//test.txt中存的字符為"hello!"
char a[10];
fgets(a,10,fp);//輸出時a[10]為"hello!"
3.fscanf:
函式原型:
int fscanf( FILE *stream, const char *format, ... );//由scanf變化而來
對比scanf函式和fscanf函式:(與printf和fprintf相似)
fscanf | scanf |
|---|---|
int fscanf( FILE *stream, const char *format, ... ); | int scanf( const char *format, ... ); |
唯一不同之處在于fscanf中有一個檔案結構體指標,
寫:(fputc,fputs)
1.fputc('字符',fp)
函式原型:
int putc(int ch,FILE *fp); //把給出的字符ch寫到fp中. 回傳值是字符, 發生錯誤時回傳值是EOF.
2.fputs
函式原型:
int fputs(const char *str,FILE *fp);//fputs()函式把str(字串)指向的字符寫到給出的輸出流. 成功時回傳非負值, 失敗時回傳EOF.
舉例:
FILE *fp; //定義一個檔案型別的結構體陣列
char a[10]="hello"; //定義一個字串,另一種方式char a[10]={'h','e','l',...};
fp=fopen("test.txt","w+"); //創建一個可以用于讀寫的文本檔案
fputs(a,fp); //將字串a寫入fp中
結果:存代碼的檔案下有了一個新的檔案test.txt,在這個檔案中的字串為hello!
3.fprintf
函式原型:
int fprintf( FILE *stream, const char *format, ... );
示例:
char name[20] = "Mary";
FILE *out;
out = fopen( "output.txt", "w" );
if( out != NULL )
fprintf( out, "Hello %s\n", name );
在源代碼所在的檔案中,output.txt檔案中就會有Hello Mary的字樣,
點擊即可查看我的CSDN博客
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253999.html
標籤:其他
上一篇:小程式-API
下一篇:矩陣乘法快速冪
