ios11ios13.0更新什么时候出适应

您当前所在位置: >
> 编辑语言
C语言文件的使用方法介绍
C语言文件的使用方法:所谓&文件&是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。
普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文件、可执行程序; 也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、 可执行程序可以称作程序文件,对输入输出数据可称作数据文件。&来源:
设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在操作系统中,把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。 通常把显示器定义为标准输出文件, 一般情况下在屏幕上显示有关信息就是向标准输出文件输出。如前面经常使用的printf,putchar 函数就是这类输出。键盘通常被指定标准的输入文件, 从键盘上输入就意味着从标准输入文件上输入数据。scanf,getchar函数就属于这类输入。
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。
ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:  11
&     &    &    &
十进制码: 5     6    7    8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 01110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作&流式文件&。
本章讨论流式文件的打开、关闭、读、写、 定位等各种操作。文件指针在C语言中用一个指针变量指向一个文件, 这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。 定义说明文件指针的一般形式为: FILE* 指针变量标识符; 其中FILE应为大写,它实际上是由系统定义的一个结构, 该结构中含有文件名、文件状态和文件当前位置等信息。 在编写源程序时不必关心FILE结构的细节。例如:FILE * 表示fp是指向FILE结构的指针变量,通过fp 即可找存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件, 实施对文件的操作。习惯上也笼统地把fp称为指向一个文件的指针。文件的打开与关闭文件在进行读写操作之前要先打开,使用完毕要关闭。 所谓打开文件,实际上是建立文件的各种有关信息, 并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。
在C语言中,文件操作都是由库函数来完成的。 在本章内将介绍主要的文件操作函数。
文件打开函数fopen
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,&文件指针名&必须是被说明为FILE 类型的指针变量,&文件名&是被打开文件的文件名。 &使用文件方式&是指文件的类型和操作要求。&文件名&是字符串常量或字符串数组。例如:
fp=(&file a&,&r&);
其意义是在当前目录下打开文件file a, 只允许进行&读&操作,并使fp指向该文件。
FILE *fphzk
fphzk=(&c:\\hzk16',&rb&)
其意义是打开C驱动器磁盘的根目录下的文件hzk16, 这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线&\\ &中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。
文件使用方式        意 义
&rt&      只读打开一个文本文件,只允许读数据
&wt&      只写打开或建立一个文本文件,只允许写数据
&at&      追加打开一个文本文件,并在文件末尾写数据
&rb&      只读打开一个二进制文件,只允许读数据
&wb&       只写打开或建立一个二进制文件,只允许写数据
&ab&       追加打开一个二进制文件,并在文件末尾写数据
&rt+&      读写打开一个文本文件,允许读和写
&wt+&      读写打开或建立一个文本文件,允许读写
&at+&      读写打开一个文本文件,允许读,或在文件末追加数 据
&rb+&      读写打开一个二进制文件,允许读和写
&wb+&      读写打开或建立一个二进制文件,允许读和写
&ab+&      读写打开一个二进制文件,允许读,或在文件末追加数据
以上就是我们给大家介绍的C语言文件的使用方法。希望大家继续关注我们的网站!
相关推荐:
上一篇:下一篇:
本文相关阅读
高校查询分数线
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
地区批次线查询
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
科目理科文科综合其他
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
院校所在地北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
其它中央部委
类型工科农业师范民族
层次本科高职(专科)
高考志愿③部曲
频道热门推荐
栏目最新更新C语言如何删除文件中的指定行--更新txt等形式文件
C语言如何删除文件中的指定行--更新txt等形式文件
基于我的上一篇文章, 链接如下:
&有时候我们需要删除文件的某一行,来更新文件,在这我个人扩展了一个函数,以删除指定条件的行。
代码如下:
static void UpdateHistoryFile(void)
&#160;&#160; &#160;FILE *fin,*
&#160;&#160; &#160;int counter = 1;
&#160;&#160; &#160;ST
&#160;&#160; &#160;do
&#160;&#160; &#160;{
&#160;&#160; &#160;&#160;&#160; &#160;fin=fopen(&test.txt&,&r&);
&#160;&#160; &#160;&#160;&#160; &#160;fout=fopen(&t.tmp&,&w&);
&#160;&#160; &#160;&#160;&#160; &#160;while(readHistoryFile(fin, &test) != EOF)
&#160;&#160; &#160;&#160;&#160; &#160;{
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;if (test.b == ) // to add the judgement case.
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;{
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;printf(&test.b & \n&);
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;}
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;else
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;{
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;test.a =
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;writeHistoryFile(fout, test);
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;counter++;
&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; &#160;}
&#160;&#160; &#160;&#160;&#160; &#160;}
&#160;&#160; &#160;&#160;&#160; &#160;
&#160;&#160; &#160;&#160;&#160; &#160;fclose(fin);
&#160;&#160; &#160;&#160;&#160; &#160;fclose(fout);
&#160;&#160; &#160;&#160;&#160; &#160;remove(&test.txt&);
&#160;&#160; &#160;&#160;&#160; &#160;rename(&t.tmp&,&test.txt&);
&#160;&#160; &#160;}while(0);
&#160;&#160; &#160;
&#160;&#160; &#160;
Best Wishes!
Yannick Tong
我的热门文章
即使是一小步也想与你分享您现在的位置:&&>>&&>>&&>>&&>>&正文
C语言新建文件向文件中输入内容并读出文件内容
&&& 一、读写一个字符函数--函数fgetc()和fputc()&&& 调用形式分别为: ch=fgetc(fp); fputc(ch,fp); fgetc()函数将fp指向的文件的一个字符读到内存,赋给字符变量ch.如果遇文件结束符时,函数返回值为1.&&& 例:从键盘输入一些字符逐个送入磁盘,直到#为止。再将此盘文件读入内存,逐个显示在光屏。&&& # include &stdio.h&&&& int main( )&&& {&&& FILE *&&& char ch,filename[10];&&& scanf("%s",filename); /*读入磁盘文件名*/&&& if((fp=fopen(filename,"w"))==NULL) /*建立新文件 */&&& {&&& printf("cannot open file\n"); /*建立新文件出错误信息*/&&& exit(1); /*终止调用过程、关闭所有文件*/&&& }&&& ch=getchar( ); /*从键盘读入一个字符*/&&& while(ch!='#') /*读到#时停止输入*/&&& {&&& fputc(ch,fp); /*将ch内字符写入fp指向的文件*/&&& ch=getchar( );&&& }&&& fclose(fp); /*关闭fp所指向的文件*/&&& if((fp=fopen(filename,"r"))==NULL) /*将filename 以'r'方式打开*/&&& {&&& printf("cannot open file\n");&&& exit (1);&&& }&&& ch=fgetc(fp); /*从fp指向的文件读一个字符给ch变量 */&&& while(ch!=EOF) /*读到文件结束符EOF时结束 */&&& {&&& putchar(ch);&&& ch=fgetc(fp);&&& }&&& fclose(fp); /*关闭文件*/&&& return 0;&&& }&&& 二、读写数据块函数--fread( )和fwrite( )函数&&& 调用方式分别为:&&& (1) 、fread(buffer,size,count,fp); 该函数将fp指向的文件的数据以数据块的形式读入内存buffer&&& (2)、write(buffer,size,count,fp);该函数将内存buffer的内容以数据块的形式写入fp指向的文件。&&& 其中:buffer:是一个指针。对于fread来说 它是读入数据的有效地址。对 fwrite来说,是要写盘的数据地址(起始地址)。 size:要读写的字节数。count:要进行读写多少个size字节的 数据项。 fp:文件型指针 如果fread或fwrite调用成功,则函数返回值为count的值。 若文件以二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息。如: fread(f,4,2,fp); f为实型数组名,4表示个实型变量占4个字节,2表示读入2次,fp向的文件数据。&&& 例:从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。&&& #include&stdio.h&&&& #define SIZE 4&&& struct student_type&&& {&&& char name[10];&&&&&&&&& char addr[15];&&& }stud[SIZE];&&& void save();/*保存输入数据到文件的函数声明*/&&& void output();/*输入文件内容的函数声明*/&&& /*在主函数main( )中的终端读入4个学生的数据,然后调用save( )函数。*/&&& int main()&&& {&&&&&& for(i=0;i&SIZE;i++)&&& scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age, stud[i].addr);&&& save();&&& printf("**********************************\n");&&& printf("这是刚才写到文件里的内容\n");&&& output();&&& return 0;&&& }&&& /*save( )函数,将数据送到"stu_list"磁盘文件中去。*/&&& void save()&&& {&&& FILE *&&&&&& if((fp=fopen("stu_list","wb"))==NULL)&&& {&&& printf("cannot open file\n");&&&&&& }&&& /*函数sizeof 计算一个结构体student_type的变量长度29(10+2+2+15)字节*/&&& for(i=0;i&SIZE;i++)&&& if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)&&& printf("file write error\n");&&& }&&& void output()&&& {&&&&&& FILE *&&& fp=fopen("stu_list","rb");&&& for(i=0;i&SIZE;i++)&&& {&&& fread(&stud[i],sizeof(struct student_type),1,fp);&&& printf("%-10s%4d%4d %-15s\n",stud[i].name, stud[i].num,stud[i].age,stud[i].addr);&&& }&&& }
【责编:peter】
没有相关文章
?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]
相关产品和培训
 友情推荐链接
 认证培训
 专题推荐
 ? ? ? ? ? ? ? ? ? ?
 今日更新
?&?&?&?&?&?&?&?&?&?&
 社区讨论
 博客论点
 频道精选
 C/C++频道相关导航比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
C语言文件追加参数的操作方法
关键字:C语言
  对文件进行读写是常碰到操作,文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。通过c语言基础培训可以基本掌握文件进行读写操作。
  文件的打开(fopen函数)
  fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式); 其中,"文件指针名"必须是被说明为FILE 类型的指针变量;"文件名"是被打开文件的文件名;"使用文件方式"是指文件的类型和操作要求。 "文件名"是字符串常量或字符串数组。
  相关函数 :open,fclose
  表头文件 :#include
  定义函数 :FILE * fopen(const char * path,const char * mode);
  函数说明
  参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
  mode有下列几种形态字符串:
  r 打开只读文件,该文件必须存在。
  r+ 打开可读写的文件,该文件必须存在。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
  上述的形态字符串再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
  返回值
  文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。
  附加说明
  一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。
  #include
  main()
  FILE *
  fp=fopen("noexist","a+");
  if(fp= =NULL)
  fclose(fp);
[ 责任编辑:之极 ]
去年,手机江湖里的竞争格局还是…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte1115人阅读
C++(154)
C语言(31)
& & &在许多文件处理应用中,你可能对创建一个新的文件不感兴趣,但是对修改已存在的文件感兴趣。修改文件的过程称为更新文件。这不像想象的那么简单。
& & &在大多数系统中,如果一个文件因为输入而打开着,再要为输出打开它是不合法的。根据文件在特定的系统中实现的方式不同,fopen的调用可能失败或者破坏文件中的内容。
& & &更新文件最普遍的方法是:先写新数据到临时文件中,然后更新文件的整个内容之后,用临时文件替换原有文件。因此,如果希望编写程序来更新已有的文件,该程序下面的步骤组成:
& & &1)打开原有的输入文件;
& & &2)打开一个不同名的临时输出文件;
& & &3)把输入文件复制到临时文件,执行希望的更新操作;
& & &4)关闭两个文件;
& & &5)删除原始文件;
& & &6)用原始文件的名称重命名临时文件;
& & &为了实现这个策略,需要用到3个来自stdio.h接口的函数:tmpnam、remove和rename。
& & &尽管你可以为临时文件自由地选择名称,但是在stdio.h接口中有一个tmpnam函数可以生成临时文件。临时文件的约定,随一台机器的不同而不同。调用tmpnam(null)函数返回一个适合机器的临时文件名。因此,可以使用下面的编码创建和打开一个新的临时文件:
& & & temp = tmpnam(NULL);
& & & outfile = fopen(temp,&w&);
& & &为了删除一个文件,只需要调用remove(name)就可以了,其中的name是该文件的名称。重命名文件也很简单,可以通过调用rename(old name, new name)函数来实现。
与ANSI库中的许多函数一样,remove和rename在正确时返回0,在失败时返回非0&#20540;。尽管你会遇到把这些函数只是看成出来过程的代码,但是通过它们的返回&#20540;来确保操作的成功是比较安全的。
& & &这3个函数可以使用我们编写一个使用CopyRemovingComments函数从文件中删除注释的程序,如下所示:
void CopyRemovingComments(FILE* infile,FILE* outfile)
bool commentF
commentFlag =
while((ch = getc(infile))!=EOF){
if (commentFlag)
if (ch == &#39;*&#39;)
nch = getc(infile);
if (nch == &#39;/&#39;)
commentFlag=
ungetc(nch,infile);
if (ch == &#39;/&#39;)
nch = getc(infile);
if (nch == &#39;*&#39;)
commentFlag=
ungetc(nch,infile);
if (!commentFlag)
putc(ch,outfile);
void main()
string filename,
FILE *infile,*
printf(&This program removes comments from a file.\n&);
while(true){
printf(&File name: &);
filename = getline();
infile = fopen(filename,&r&);
if(infile != NULL)
printf(&File %s not found -- try again.\n&,filename);
temp = tmpnam(NULL);
outfile = fopen(temp,&w&);
if (outfile == NULL)
Error(&Can&#39;t open temporary file.&);
CopyRemovingComments(infile,outfile);
fclose(infile);
fclose(outfile);
if (remove(filename)!=0 || rename(temp,filename)!=0)
Error(&Unable to rename temporary file.&);
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:491206次
积分:10679
积分:10679
排名:第1368名
原创:499篇
评论:38条
(1)(1)(4)(1)(1)(3)(13)(11)(9)(2)(9)(24)(13)(27)(43)(13)(5)(1)(5)(10)(6)(24)(12)(3)(6)(12)(14)(47)(66)(73)(37)(5)(7)(1)(3)(2)

我要回帖

更多关于 ios13.0更新什么时候出 的文章

 

随机推荐