程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 文件的隨機讀寫詳解及示例代碼

C說話 文件的隨機讀寫詳解及示例代碼

編輯:關於C++

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說話劃定的肇端地位有三種,分離為文件開首、以後地位和文件末尾,

每一個地位都用對應的常量來表現:

肇端點 常量名 常量值 文件開首 SEEK_SET 0 以後地位 SEEK_CUR 1 文件末尾 SEEK_END 2

例如,把地位指針挪動到離文件開首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說話 文件隨機讀寫的材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved