C/C++读写文件小结

C/C++读写文件小结

因为工作需要,最近到处摘抄C/C++关于读写文件的例子,这里留个小结,以备后用。
读文件的流程是大致是如此的:
建立一个操作文件的指针 *fd => 用某种方式(读/写/读写/追加等等)打开文件 => 对文件做相应的操作。
示例文件名为readtxt.txt,同程序置于相同目录下。文件内容为:
hello,world
my name is rf0007

 纯C的读文本文件
定义一个文件指针
FILE *fd;
用fopen打开一个文本文件,fopen的第一个参数为文件路和文件名,第二个参数定义的是打开文件的方式,这些参数实在是记不住,具体的如下:

参数 全写 意义
r read
w write
a append 追加
t text 文本文件,可省略
b binary 二进制文件

rt 只读,文本文件
wt 只写或建立,文本文件
at 在文件末尾追加,文本文件
rb 只读,二进制文件
wb 只写或建立,二进制文件
ab 在文件末尾追加,二进制文件
rt+ 可读可写,文本文件
wt+ 可读可写或建立,文本文件
at+ 可读可写,在文件的末尾追加,文本文件
rb+ 可读可写,二进制文件
wb+ 可读可写或建立,二进制文件
ab+ 可读可写,在文件的末尾追加,二进制文件

fd = fopen("txtfile.txt","r");
执行完fopen后,需要判断一下,此文件是否确实被打开了。
if(NULL == fd)printf("文件未被打开");
接下来就可以进行文件的操作了。
读文件的函数有好几个,fread,fscanf,fgets。它们之间是有区别的:
fread是以块的方式来读取数据,按照指定的长度和指定的次数来读,读完后的数据是按照地址的方式来存储的,所以,比较适合用它来读二进制数,因为程序员比较清楚的知道自己要读多少的数据。
fgets是以串的方式来读取数据,从数据文件中读取不超过N-1个字符的数,读入的数据在最后一个字符后会加上一个截止符'/n',如果中间出现了回车,就会截止了。所以可以用fgets来读入一行的文本数据,应该是相当好用的。
fscanf与fgets类似,不过它是按照格式来读的,跟scanf一样。比如说,指定一个%d,那么它就读入一个整型的值;如果指定一个%s,那么它遇到一个空格也会停止的。
以下是一个实际的代码,用三种方式来完成文件的读取。
#include <stdio.h>
int main()
{
    FILE *fd;
    char buf[64];
    fd = fopen("txtfile.txt","rb");
    if(NULL == fd)
    {
      printf("read file error!");
      return 0;      
    }
    printf("read file success!/n");
    while(!feof(fd))
    {
        /*method 1
      fgets(buf,64,fd);
      printf("%s/n",buf);
      */
      /*method 2
      fread(buf,64,1,fd);
      printf("the %dth time: %s /n ",count,buf);
      */
      fscanf(fd,"%s",buf);
      printf("%s/n",buf);
    }  
    fclose(fd);
    return 1;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值