C语言的文件处理
????? 所謂“文件”一般指存儲在外部介質(zhì)上數(shù)據(jù)的集合。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII文件和二進(jìn)制文件。ASCII文件,又稱為文本文件,它的每一個字節(jié)存放一個ASCII代碼,代表一個字符。二進(jìn)制文件是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存取。
一、文件的打開與關(guān)閉
ANSI C規(guī)定了標(biāo)準(zhǔn)輸入輸出函數(shù)庫,用fopen()函數(shù)來實現(xiàn)打開文件。fopen函數(shù)的調(diào)用方式通常為:
FILE * fp;
fp = fopen(文件名,使用文件方式);
| 文件使用方式 | 含義 |
| “r”(只讀) | 為輸入打開一個文本文件 |
| “w”(只寫) | 為輸出打開一個文本文件 |
| “a”(追加) | 向文本文件尾增加數(shù)據(jù) |
| “rb”(只讀) | 為輸入打開一個二進(jìn)制文件 |
| “wb”(只寫) | 為輸出打開一個二進(jìn)制文件 |
| “ab”(追加) | 向二進(jìn)制文件尾增加數(shù)據(jù) |
| “r+”(讀寫) | 為讀/寫打開一個文本文件 |
| “w+”(讀寫) | 為讀/寫建立一個新的文本文件 |
| “a+”(讀寫) | 為讀/寫打開一個文本文件 |
| “rb+”(讀寫) | 為讀/寫打開一個二進(jìn)制文件 |
| “wb+”(讀寫) | 為讀/寫建立一個新的二進(jìn)制文件 |
| “ab+”(讀寫) | 為讀/寫打開一個二進(jìn)制文件 |
?
?
?
?
?
?
?
?
?
用fclose函數(shù)關(guān)閉文件。fclose函數(shù)調(diào)用的一般形式為:
fclose(文件指針);
二、文件的讀寫操作
fputc函數(shù)把一個字符寫到磁盤文件上去。其調(diào)用形式為:fputc(ch,fp);
fgetc函數(shù)從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的,其調(diào)用形式為:ch=fgetc(fp);
?
fread和fwrite用來讀寫一個數(shù)據(jù)塊,其一般調(diào)用形式為:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
其中:
buffer:是一個指針。對fread來說,它是讀入數(shù)據(jù)的存放地址;對fwrite來說,它是要輸出數(shù)據(jù)的地址。
size:要讀寫的字節(jié)數(shù)。
count:要進(jìn)行讀寫多少個size字節(jié)的數(shù)據(jù)項。
fp:文件型指針。
?
格式化讀寫:
fprintf(文件指針,格式字符串,輸出表列);
fscanf(文件指針,格式字符串,輸出表列);
?
fgets的作用是從指定文件讀入一個字符串。
fgets(str,n,fp);
fputs函數(shù)的作用向指定的文件輸出一個字符串。
fputs(str,fp);
三、文件的定位
rewind函數(shù)的作用是使位置指針重新返回文件的開頭。
rewind(fp);
fseek函數(shù)可以實現(xiàn)改變文件的位置指針。
fseek(文件指針,位移量,起始點);
| 起始點 | 名 字 | 用數(shù)字代表 |
| 文件開始 | SEEK_SET | 0 |
| 文件當(dāng)前位置 | SEEK_CUR | 1 |
| 文件末尾 | SEEK_END | 2 |
?
?
?
“位移量”是指以起始點為基點,向前移動的字節(jié)數(shù)。ANSI C要求位移量是long型數(shù)據(jù)。
ftell函數(shù)的作用是得到流式文件中的當(dāng)前位置,用相對于文件開頭的位移量來表示。
ftell(fp);
四、文件的狀態(tài)
feof(fp); //若到文件末尾,函數(shù)值為“真”(非0)。
ferror(fp); //若對文件操作出錯,函數(shù)值為“真”(非0)。
clearerr(fp); //使ferror和feof函數(shù)值置零。
轉(zhuǎn)載于:https://www.cnblogs.com/chengtulang/p/3185887.html
總結(jié)
- 上一篇: 气溶胶光学厚度反演的两种方式(卫星探测和
- 下一篇: 红黑树数据结构剖析