- 相關(guān)推薦
C語(yǔ)言中文件操作詳解及實(shí)例代碼
在文件操作中除了打開(kāi)操作以及讀寫(xiě)操作,還有幾種比較常見(jiàn)的操作。以下是百分網(wǎng)小編搜索整理的關(guān)于這些操作中涉及到的函數,,需要的朋友可以參考本文!想了解更多相關(guān)信息請持續關(guān)注我們應屆畢業(yè)生考試網(wǎng)!
一.移動(dòng)位置指針的函數
rewind函數和fseek函數,這兩個(gè)函數的原型是:
void rewind(FILE *fp); 將位置指針移動(dòng)到文件首
int fseek(FILE *fp,long int offset,int origin); 將位置指針移動(dòng)到距離origin的offset字節數的位置
其中對于fseek函數中的參數,origin為起始點(diǎn),offset為距離origin的偏移字節數
origin的值有三個(gè):SEEK_SET(0)—>文件首,SEEK_CUR(1)—>當前位置,SEEK_END(2)—>文件尾。
注意:1)若文件是以追加方式打開(kāi),則當進(jìn)行寫(xiě)操作時(shí),這兩個(gè)函數是不起作用的,無(wú)論將位置指針移動(dòng)哪個(gè)位置,始終將添加的數據追加到文件末尾。
二.其他常用函數
1.ftell函數
long int ftell(FILE *fp);
計算當前位置指針距文件首的字節數,若出錯,則返回-1L。
利用ftell函數可以計算出文件的大小。
2.feof函數
int feof(FILE *fp);
檢測當前位置指針是否到達文件末尾,若到達文件末尾,則返回一個(gè)非零值,否則返回0。
3.ferror函數
int ferror(FILE *fp);
檢測文件操作過(guò)程中是否出錯,若出錯,則返回一個(gè)非零值,否則返回0
4.remove函數
int remove(const char *filename);
刪除文件,若刪除成功,則返回0,否則返回非零值
5.rename函數
int rename(const char *oldname,const char *newname);
將文件重命名,重命名成功則返回0,否則返回非零值。
6.freopen函數
FILE* freopen(const char *filename,const char *mode,FILE *stream);
實(shí)現重定向輸入輸出。此函數在測試數據時(shí)用得比較多。
7.fclose函數
int fclose(FILE *stream);
關(guān)閉一個(gè)流,若成功,則返回0,否則返回-1.注意每次對文件操作完之后需關(guān)閉流,否則可能會(huì )造成數據丟失。
測試程序:
#include
#include
int main(void)
{
freopen("input.txt","r",stdin);
freopen("output.txt","w+",stdout);
int i;
int a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
假設工程目錄下已經(jīng)存在input.txt,文件中的數據為1 2 -1 3 4 5 7 8 9 10,則運行之后,不需要從控制臺輸入數據,程序直接從input.txt中讀取數據,然后將結果輸出到output.txt中,不直接向控制臺輸出結果。
【C語(yǔ)言中文件操作詳解及實(shí)例代碼】相關(guān)文章:
C語(yǔ)言文件操作解析詳解及實(shí)例代碼10-02
詳解C語(yǔ)言文件操作中fgets與fputs函數10-08
C語(yǔ)言奇偶排序算法詳解及實(shí)例代碼10-30
C語(yǔ)言以數據塊的形式讀寫(xiě)文件實(shí)例代碼10-09
C語(yǔ)言快速排序實(shí)例代碼10-30
C語(yǔ)言面試實(shí)例操作08-14
C語(yǔ)言文件操作的方法09-17