c语言二fseek从文件头移动_编程C语言文件的随机读写
實現隨機讀寫的關鍵是要按要求移動位置指針,這稱為文件的定位。
文件定位
移動文件內部位置指針的函數主要有兩個,即rewind()和fseek()。rewind函數前面已多次使用過,其調用形式為:??? rewind(文件指針);它的功能是把文件內部的位置指針移到文件首。下面主要介紹fseek函數。fseek函數用來移動文件內部位置指針,其調用形式為:??? fseek(文件指針,位移量,起始點);其中:
“文件指針”指向被移動的文件。
“位移量”表示移動的字節數,要求位移量是long型數據,以便在文件長度大于64KB 時不會出錯。當用常量表示位移量時,要求加后綴“L”。
“起始點”表示從何處開始計算位移量,規定的起始點有三種:文件首,當前位置和文件尾。
其表示方法如下表:
起始點
表示符號
例如:? ? fseek(fp,100L,0);其意義是把位置指針移到離文件首100個字節處。還要說明的是fseek函數一般用于二進制文件。在文本文件中由于要進行轉換,故往往計算的位置會出現錯誤。
文件的隨機讀寫
在移動位置指針之后,即可用前面介紹的任一種讀寫函數進行讀寫。由于一般是讀寫一個數據據塊,因此常用fread和fwrite函數。下面用例題來說明文件的隨機讀寫。【例13-8】在學生文件stu_list中讀出第二個學生的數據。#include
struct stu{
char name[10];
int num;
int age;
char addr[15];
}boy,*qq;
main(){
FILE *fp;
char ch;
int i=1;
qq=&boy;
if((fp=fopen("stu_list","rb"))==NULL){
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
rewind(fp);
fseek(fp,i*sizeof(struct stu),0);
fread(qq,sizeof(struct stu),1,fp);
printf("\n\nname\tnumber age addr\n");
printf("%s\t%5d %7d %s\n",qq->name,qq->num,qq->age,qq->addr);
}文件stu_list已由【例13-6】的程序建立,本程序用隨機讀出的方法讀出第二個學生的數據。程序中定義boy為stu類型變量,qq為指向boy的指針。以讀二進制文件方式打開文件,程序第19行移動文件位置指針。其中的i值為1,表示從文件頭開始,移動一個stu類型的長度,然后再讀出的數據即為第二個學生的數據。
總結
以上是生活随笔為你收集整理的c语言二fseek从文件头移动_编程C语言文件的随机读写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7 mysql安装配置_my
- 下一篇: 申报个人所得税步骤 三个步骤就可以完成