c语言一个一个读取文件字节,【C语言】文件常用读写操作(含读取示例)

fb1dc42728fd2a306c1d410572ff1d09.png

C文件概述文件是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。(这就是为什么对文件操作的是需要打开 和关闭)文件分类有很多种分类我这里暂时就只介绍一种分类方式。也就是我们在C语言文件操作中用到的二进制和ASCII方式。二进制文件形式:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。优点:可以节省外存空间和转换时间。缺点:一个字节并不对应一个字符,不能直接输出字符形式。一般中间结果数据需要暂时保存在外存上,以后又需要输入内存的,常用二进制文件保存。ASCII文件(文本文件)形式:每一个字节放一个ASCII代码。优点:便于对字符进行逐个处理,也便于输出字符c语言文件fscanf。缺点:一般占存储空间较多,而且要花费转换时间。对比存储图补充内容缓冲文件系统C语言中对文件的读写都是用库函数来实现的。对二进制文件和文本文件都采用缓冲文件系统。UNIX系统对文本文件采用缓冲文件系统,二进制文件采用非缓冲文件系统事实上,当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有缓冲区已满或“关闭文件”时,才会将数据写入磁盘。如果没有缓冲区的话对文件的读写都需要另外的函数,这样速度很慢而且也不是C语言自身的函数c语言文件fscanf。

2c996e594b5c60be56ffb421352668a8.png

C语言文件指针定义文件的打开与关闭fopen函数头文件:stdio.h功 能:以type方式打开filename文件并返回该文件的指针用 法:FILE *fopen(char *filename,char *type);返回值:filename的文件指针注意:1.凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。2.用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。若以写或读写方式打开一个已存在的文件时将清除原来文件的内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。3.若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将会出错。fclose函数头文件:stdio.h功 能:关闭一个流用 法:int fclose(FILE *stream);返回值:成功返回0,不成功返回EOF(-1)文件的读写(头文件均为stdio.h)字符读写函数fgetc函数功 能:从fp所指向的文件中读取字符用 法:int fgetc(FILE *fp);返回值:返回文件fp所指向的文件中的字符值(EOF为文件尾)补 充:1.调用该函数时,文件使用方式必须是以读或读写方式打开的。

00902eae21ce7acccd467200fccd031c.png

2.在文件内部有一个位置指针,用来指向文件的当前读写fputc函数功能:将字符(ch的值)输出到fp所指向的文件中去。用法:int futc(int ch,FILE *fp);返回值:写入成功返回写入字符ch不成功返回EOF示例:[cpp]#includeintmain(){FILE*fp;charch,filename[20];printf("Pleaseinputyourfilename:");scanf("%s",filename);if(!(fp=fopen(filename,"w"))){printf("Cannotopen%s\n",filename);}else{printf("Pleaseinputthesentencesyouwrite:");ch=getchar();ch=getchar();while(ch!=EOF){fputc(ch,fp);ch=getchar();}fclose(fp);}if(!(fp=fopen(filename,"r"))){printf("Cannotopen%s\n",filename);}else{printf("Thecontentof%sis:",filename);while(!feof(fp)){ch=fgetc(fp);putchar(ch);}printf("\n");fclose(fp);}return0;}字符串读写函数fgets函数功 能:从fp所指向的文件(stdin特殊文件)中读取长度为n的字符串保存到string中用 法:char*fgets(char*string,intn,FILE*fp);返回值:成功,返回string失败,返回NULLfputs函数功 能:将字符串string写入fp所指向的文件中。

a6ab6343528de10661c8aa9e00a9a8cc.png

用 法:intfputs(char*string,FILE*fp);返回值:输入成功,返回值0输入失败,返回EOF示例:[cpp]#include#defineLEN100intmain(){FILE*fp;charch,string[LEN],filename[20],string1[LEN];printf("Pleaseinputyourfilename:");scanf("%s",filename);if(!(fp=fopen(filename,"w"))){printf("Cannotopen%s\n",filename);}else{printf("Pleaseinputthesentencesyouwrite:");ch=getchar();fgets(string,LEN,stdin);if(!fputs(string,fp))printf("写入成功\n");elseprintf("写入失败\n");fclose(fp);}if(!(fp=fopen(filename,"r"))){printf("Cannotopen%s\n",filename);}else{printf("Thecontentof%sis:",filename);fgets(string1,LEN,fp);printf("%s\n",string1);fclose(fp);}return0;}数据块读写函数fread函数功 能:从fp指向的文件中读取n个size大小的数据写入ptr指向的地方用 法:intfread(void*ptr,intsize,intn,FILE*fp);返回值:成功,返回读取元素个数不成功,返回0参数说明:ptr:读入数据的存放地址(首地址)size:要读写的字节数n:要进行读写多少个size字节的数据项fwrite函数功 能:从ptr指向的地方读取n个size大小的数据写入fp指向的文件中用 法:intfwrite(void*ptr,intsize,intn,FILE*fp);返回值:返回写入文件的实际个数参数说明:ptr:输出数据的地址(首地址)其余同上注意:这个函数以二进制形式对文件进行操作,不局限于文本文件示例:[cpp]#include#defineSIZE5typedefstruct{charname[20];charnum[15];intage;}student;studentstu[SIZE],buf[SIZE];;boolsave();voidread();intmain(){inti;for(i=0;iscanf("%s%s%d",&stu[i].name,&stu[i].num,&stu[i].age);//fread(&stu[i],sizeof(student),1,stdin);if(save()){read();for(i=0;i

640?wx_fmt=jpeg

fprintf函数功 能:从磁盘文件中按格式输出字符用 法:intfprintf(FILE*fp,char*format,[argument...]);示 例:fprintf(fp,"%d,%6.2f",i,t);返回值:成功返回输出的字符数失败时返回一个负值.示例:[cpp]#include#defineSIZE5typedefstruct{charname[20];charnum[15];intage;}student;studentstu[SIZE],buf[SIZE];intmain(){FILE*fp;charfilename[50],ch;printf("inputyournamenumandage:\n");fscanf(stdin,"%s%s%d",&stu[0].name,&stu[0].num,&stu[0].age);//stdin为键盘输入printf("Pleaseinputyourreadfilename:");scanf("%s",filename);if(!(fp=fopen(filename,"w"))){printf("Cannotopen%s",filename);return1;}fprintf(fp,"name:%snum:%sage:%d",stu[0].name,stu[0].num,stu[0].age);fclose(fp);return0;}/*Alice00118*/总结1.用fopen打开文件2.采用自己需要的方式写文件或读文件3.用fclose关闭文件

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-100737-1.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值