欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言 文件的隨機(jī)讀寫詳解及示例代碼

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

前面介紹的文件讀寫函數(shù)都是順序讀寫,即讀寫文件只能從頭開始,依次讀寫各個數(shù)據(jù)。但在實(shí)際開發(fā)中經(jīng)常需要讀寫文件的中間部分,要解決這個問題,就得先移動文件內(nèi)部的位置指針,再進(jìn)行讀寫。這種讀寫方式稱為隨機(jī)讀寫,也就是說從文件的任意位置開始讀寫。

實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵是要按要求移動位置指針,這稱為文件的定位。

文件定位函數(shù)rewind和fseek

移動文件內(nèi)部位置指針的函數(shù)主要有兩個,即 rewind() 和 fseek()。

rewind() 用來將位置指針移動到文件開頭,前面已經(jīng)多次使用過,它的原型為:

void rewind ( FILE *fp );

fseek() 用來將位置指針移動到任意位置,它的原型為:

int fseek ( FILE *fp, long offset, int origin );

參數(shù)說明:

1) fp 為文件指針,也就是被移動的文件。

2) offset 為偏移量,也就是要移動的字節(jié)數(shù)。之所以為 long 類型,是希望移動的范圍更大,能處理的文件更大。

3) origin 為起始位置,也就是從何處開始計(jì)算偏移量。C語言規(guī)定的起始位置有三種,分別為文件開頭、當(dāng)前位置和文件末尾,

每個位置都用對應(yīng)的常量來表示:

起始點(diǎn) 常量名 常量值
文件開頭 SEEK_SET 0
當(dāng)前位置 SEEK_CUR 1
文件末尾 SEEK_END 2

例如,把位置指針移動到離文件開頭100個字節(jié)處:

fseek(fp, 100, 0);

值得說明的是,fseek() 一般用于二進(jìn)制文件,在文本文件中由于要進(jìn)行轉(zhuǎn)換,計(jì)算的位置有時(shí)會出錯。

文件的隨機(jī)讀寫

在移動位置指針之后,就可以用前面介紹的任何一種讀寫函數(shù)進(jìn)行讀寫了。由于是二進(jìn)制文件,因此常用 fread() 和 fwrite() 讀寫。

【示例】從鍵盤輸入三組學(xué)生信息,保存到文件中,然后讀取第二個學(xué)生的信息。

#include<stdio.h>
#define N 3
struct stu{
  char name[10]; //姓名
  int num; //學(xué)號
  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); //寫入三條學(xué)生信息
  fseek(fp, sizeof(struct stu), SEEK_SET); //移動位置指針
  fread(&boy, sizeof(struct stu), 1, fp); //讀取一條學(xué)生信息
  printf("%s %d %d %f\n", boy.name, boy.num, boy.age, boy.score);
  fclose(fp);
  return 0;
}

運(yùn)行結(jié)果:

Input data:
Tom 2 15 90.5↙
Hua 1 14 99↙
Zhao 10 16 95.5↙
Hua  1  14 99.000000

以上就是對 C語言 文件隨機(jī)讀寫的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對本站的支持!

上一篇:用C語言的泛型實(shí)現(xiàn)交換兩個變量值

欄    目:C語言

下一篇:C++快速冪與大數(shù)取模算法示例

本文標(biāo)題:C語言 文件的隨機(jī)讀寫詳解及示例代碼

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2073.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有