将磁盘文件的内容进行读取

1 题目

功能:对一个文件重复读取(利用rewind()函数)

描述:

将磁盘文件的内容进行读取

第一次将它的内容显示在屏幕上,第二次把他复制到另外一个文件中

2 知识点

对文件需要进行随机读取的原因: 对文件进行顺序读写比较容易理解,也容易操作,但有时效率不高,例如文件中有1000个数据,若只査第1000个数据,必须先逐个读入前面999个数据,才能读入第1000个数据。如果文件中存放一个城市几百万人的资料,若按此方法查某一人的情况,等待的时间可能太长了。 随机访问不是按数据在文件中的物理位置次序进行读写,而是可以对任何位置上的数 据进行访问,显然这种方法比顺序访问效率高得多。

rewind() 函数

文件位置标记定位,强制使文件位置标记指向文件开头,此函数没有返回值

3 思路

可以利用 rewind() 函数进行操作,当第一次读取完后,文件位置标记指向了文件尾,那么使用 rewind() 函数将文件位置标记重新返回到文件头部

4 代码

#include <stdio.h> 
#include <stdlib.h>
​
/**
功能:对一个文件重复读取
描述:将磁盘文件的内容进行读取,第一次将它的内容显示在屏幕上,第二次把他复制到另外一个文件中
**/
​
int main(int argc, char const *argv[]) { 
  FILE * fp1, * fp2;
  fp1 = fopen("ex047_1.dat", "r");  // 打开输入文件
  fp2 = fopen("ex047_2.dat", "w");  // 打开写入文件
  while(!feof(fp1)){
    putchar(fgetc(fp1));      // 输出到屏幕
  }
  putchar(10);            // 换行
  rewind(fp1);            // 文件位置标记重新返回文件的开头
  while(!feof(fp1)) {
    fputc(fgetc(fp1), fp2);       // 重头,逐个字符读取写入到ex047_2.dat
  }
  fclose(fp1);
  fclose(fp2);
  return 0;
}

执行后结果:

$ gcc ex047.c -o demo
$ ./demo
hello
world
this is my first use of wind!

ex047_2.dat 文件中内容,与ex047_1.dat一致:

hello
world
this is my first use of wind!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值