首页 > 其他 > 详细

C文件读取

时间:2021-04-10 23:04:57      阅读:37      评论:0      收藏:0      [点我收藏+]

二进制读取

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fpRead = fopen("data.in","rb");
    FILE *fpWrite = fopen("data.o","wb");
    unsigned char buf[1000];
    int rc;
    while((rc = fread(buf,sizeof(unsigned char), 1, fpRead))!=0)
    {
        fwrite( buf, sizeof(unsigned char), rc, fpWrite );
        for(int i = 0; i < rc; i++)
        {
            printf("%x, ",buf[i]);
        }
    }
    printf("\n");
    fclose(fpRead);
    fclose(fpWrite);
    return 0;
}

技术分享图片
data.in文件:按照一个字节一个字节输出(以十六进制的形式,读入时候读的是ASCII码)
技术分享图片

fopen() 函数参数

FILE *fp = fopen("D:\\1.txt","rb+");
// 以二进制的形式打开文件1.txt, 如果文件不存在则返回NULL。文件以读写方式打开,可以用fp指针修改或者读取。

  • r 只读方式
  • w 只写方式, 如果文件不存在则新建一个文件,如果文件存在,则清空文件重写
  • r+ 可读可写,如果文件不存在则返回NULL
  • w+ 可读可写,如果文件不存在则新建文件
  • a 追加方式,如果文件不存在则新建文件,如果文件存在则在末尾追加写入的数据
  • a+ 可读可写,写入的数据追加至末尾,如果文件不存在则新建文件
    后面默认为t,以文件格式读写;
    如果加上b,则以二进制文件读写

fread() 函数参数

size_t fread(void *buf, size_t size, size_t num, FILE *stream)

  • buf 指向带有最小尺寸 size*nmemb 字节的内存块的指针, 用来存读入的数据
  • size 每个元素大小,以字节为单位
  • num 一次读取的元素个数
  • stream 指向FILE对象的指针,由fopen函数生成
    rc = fread(buf,sizeof(unsigned char), 10, fpRead))
    buf一次存入10个字节的数据,也可能由于文件缺失,只读了一部分,rc记录读入的元素个数,如果rc==0,说明读入完成。

fscanf() 函数参数

int fscanf(FILE * stream, const char * format, [argument...])

  • stream 指向FILE对象的指针,输入流(跟cin类似,指键盘上输入)fin则从文件输入,由fopen创建。
  • format 一次读入文件的格式,例如"%s %s %s %d"
  • [argument...] 读取的数据保存的位置, s0,s1,s2,&num
    返回读入参数的个数,读取失败则返回EOF(-1)

按结构体读取文件

#include<stdio.h>
#include<stdlib.h>
typedef struct Student{
 int age;
 char name[10];
 int gender;
}Stu;
int main()
{
    FILE *fpRead = fopen("data.in","r");
    FILE *fpWrite = fopen("data.o","w");
    Stu buf[1000];
    int rc;
    int j = 0;
    while((rc = fscanf(fpRead,"%d,%d,%s",&buf[j].age,&buf[j].gender,buf[j].name))!=EOF)
    {   
        printf("age:%d name:%s gender:%s\n",buf[j].age,buf[j].name,buf[j].gender?"男":"女");
        j++;
    }
    printf("\n");
    fclose(fpRead);
    fclose(fpWrite);
    return 0;
}

读取的文件

12,1,Tom
14,0,Sara
12,1,Jack
18,0,Kate

输出:
技术分享图片

C文件读取

原文:https://www.cnblogs.com/raiuny/p/14641807.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!