C說話 文件的隨機讀寫詳解及示例代碼。本站提示廣大學習愛好者:(C說話 文件的隨機讀寫詳解及示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 文件的隨機讀寫詳解及示例代碼正文
後面引見的文件讀寫函數都是次序讀寫,即讀寫文件只能從頭開端,順次讀寫各個數據。但在現實開辟中常常須要讀寫文件的中央部門,要處理這個成績,就得先挪動文件外部的地位指針,再停止讀寫。這類讀寫方法稱為隨機讀寫,也就是說從文件的隨意率性地位開端讀寫。
完成隨機讀寫的症結是要按請求挪動地位指針,這稱為文件的定位。
文件定位函數rewind和fseek
挪動文件外部地位指針的函數重要有兩個,即 rewind() 和 fseek()。
rewind() 用來將地位指針挪動到文件開首,後面曾經屢次應用過,它的原型為:
void rewind ( FILE *fp );
fseek() 用來將地位指針挪動就任意地位,它的原型為:
int fseek ( FILE *fp, long offset, int origin );
參數解釋:
1) fp 為文件指針,也就是被挪動的文件。
2) offset 為偏移量,也就是要挪動的字節數。之所認為 long 類型,是願望挪動的規模更年夜,能處置的文件更年夜。
3) origin 為肇端地位,也就是從何處開端盤算偏移量。C說話劃定的肇端地位有三種,分離為文件開首、以後地位和文件末尾,
每一個地位都用對應的常量來表現:
例如,把地位指針挪動到離文件開首100個字節處:
fseek(fp, 100, 0);
值得解釋的是,fseek() 普通用於二進制文件,在文本文件中因為要停止轉換,盤算的地位有時會失足。
文件的隨機讀寫
在挪動地位指針以後,便可以用後面引見的任何一種讀寫函數停止讀寫了。因為是二進制文件,是以經常使用 fread() 和 fwrite() 讀寫。
【示例】從鍵盤輸出三組先生信息,保留到文件中,然後讀取第二個先生的信息。
#include<stdio.h> #define N 3 struct stu{ char name[10]; //姓名 int num; //學號 int age; //年紀 float score; //成就 }boys[N], boy, *pboys; int main(){ FILE *fp; int i; pboys = boys; if( (fp=fopen("d:\\demo.txt", "wb+")) == NULL ){ printf("Cannot open file, press any key to exit!\n"); getch(); exit(1); } printf("Input data:\n"); for(i=0; i<N; i++,pboys++){ scanf("%s %d %d %f", pboys->name, &pboys->num, &pboys->age, &pboys->score); } fwrite(boys, sizeof(struct stu), N, fp); //寫入三條先生信息 fseek(fp, sizeof(struct stu), SEEK_SET); //挪動地位指針 fread(&boy, sizeof(struct stu), 1, fp); //讀取一條先生信息 printf("%s %d %d %f\n", boy.name, boy.num, boy.age, boy.score); fclose(fp); return 0; }
運轉成果:
Input data:
Tom 2 15 90.5↙
Hua 1 14 99↙
Zhao 10 16 95.5↙
Hua 1 14 99.000000
以上就是對 C說話 文件隨機讀寫的材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!