几个函数介绍

1、fseek

函数原型:int fseek( FILE *fp, long offset, int origin );

参数介绍:fp为文件指针;offset为偏移量,正值表示正向偏移,负值表示负向偏移;origin为所要偏移的基准位置(也即从哪里开始偏移),一般常用的有三种取值,分别为SEEK_SET(文件开头)、SEEK_CUR(当前位置)、SEEK_END(文件结尾),也可以用这些宏名对应的数值, 它们的值分别为0(开头),1(当前),2(结尾)。函数返回值为当前位置,否则返回-1。

函数功能:将fp所指向的文件位置指针移动到origin所指的位置,以此为基准,然后以偏移量offset移动到指定偏移的位置。

例子:fseek(fp,100L,0);//把文件从开头移动到100个字节的位置,其中0也可以用SEEK_SET来代替

           fseek(fp,100L,1);//把文件从当前位置移动到100个字节的位置

           fseek(fp,-100L,2);//把文件从文件末尾退回到100个字节处

2、ftell

函数原型:long ftell(FILE *fp)

函数功能:返回文件指针所指向的位置离文件开头偏移的字节数(也即从当前位置离文件开头的距离)

该函数可以与fseek结合来计算出文件的长度,先将文件移动到文件末尾fseek(fp,0,SEEK_SET);然后调用length=ftell(fp);也就得到了文件的长度。

3、GetTickCount

函数原型:DWORD GetTickCount(void)

该函数无需传递参数。

函数功能:该函数返回从操作系统启动到现在的毫秒数,所以如果在程序启动的时候,记下时间,当程序结束,再记下该时间,两次时间之差,就得到这个程序的运行时间。

   由于返回值是DWORD类型,即double word,每个word是2个字节,DWORD就是4个字节,共32位,可以存储的最大数为2^32ms,约为49.71天,当超过这个时间,这个数字会归0。所以如果计数范围大约这个时间,要慎用。比如在编写服务器端程序,就要小心这种情况的发生。另外还要注意,这个函数并非实时发送,而是由系统没18ms发送一次,因此最小精度为18ms,如果计数间隔小于该值,不应该用该函数,而应改用StopWatch。

4、fopen

函数原型:FILE *fopen(char *filename,char *mode)

参数介绍:filename是一个字符串指针,在使用的时候,也可以直接用“文件的路径名加上文件名”(包括文件的后缀),并且注意在输入路径的时候用\\,而不是\,例如:E:\\Code\\Test\\input.txt。mode指打开的模式,有以下几种

r 以只读方式打开文件,该文件必须存在

r+ 以可读写方式打开文件,该文件必须存在

rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在

rw+ 读写打开一个文本文件,允许读和写。文件必须存在
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。
总结一下:有r,必须要求原文件存在(有文件才能进行读操作),否则打开失败,文件指针返回NULL;有+,表示可读写,可以认为扩展了原有的功能,原来只读,加上+,变成也可以写,原来只写,加上+,变成也可以读;有w,原文件若存在,会将原文件清空,原文件若不存在,会新建一个。a与w区别在于,它是在文件末尾进行写操作,因而不会清空之前文件的内容。以上几个操作符都可以与t和b组合,与t组合表示是文本文件,默认的也是文本文件,所以不写t也可以,与b组合表示二进制文件。
例子 FILE *fp;
       fp=fopen("E:\\Code\\Test\\input.txt","a+");//打开或新建一个文本文件,进行读写操作
5、fclose
函数原型:int fclose(FILE *fp)

 有错则返回非0,正确返回0

函数功能:关闭fp所指的文件,将该指针与指针“脱钩”,并释放文件的缓存区。使用完一个文件后应该关闭它,防止在之后的程序因误用造成文件内容更改。

6、fread和fwrite

函数原型:int fread(char *pt,unsigned size,unsigned n,FILE *fp

                  int fwrite(char *pt,unsigned size,unsigned n,FILE *fp)

参数说明:两者的形参都一样,pt是一个字符串指针,指向要读写数据的起始地址(常常是缓存区的地址),size表示要读写的字节数(几个字节一起读写),n表示要读写多少个size字节大小的数据项。对于fread,返回值是所读入的数据项个数,也即n的值,如果遇到文件结束或出错则返回0;对于fwrite,返回值是写入到文件中的数据项个数,即n的值,写入失败,也是返回0。

这里要注意,在读写之前要先调用fopen函数打开文件,并且规定是具有读权限还是写权限,如果前面只规定读,后面却用了写操作,写操作是不起作用的,返回值为0。即fopen函数不光是打开一个文件,还控制数据流的方向,影响后面fread和fwrite函数的实现。

例子:FILE *fp=NULL;

           char a[]="hello&world"

            fp=fopen("E:\\Code\\Test\\input.txt","a+");

            fwrite(a,2,4,fp);

7、fscanf和fprintf

函数原型:int fscanf(FILE *fp,char format,args,...);

                  int fprintf(FILE *fp,char format,args,...

参数说明:这两个函数都是变参函数,后面变量列表可以有多个。fp文件指针,format是指要规定的格式字符串,如“%d,%f”这种形式,args指的是要读写的变量列表。与scanf和printf功能类似,但是fscanf和fprintf读写的对象不是终端,而是磁盘。由于变量在内存中都是以二进制形式存储,所以使用这两个函数,总会将ASCII字符和二进制文件,进行相互转换,花费时间比较多,如果需要内存和磁盘频繁的进行数据交换时,最好选用fread和fwrite。

例子:FILE *fp=NULL;

           char a[]=“hello&world”;

          fp=fopen(“E:\\Code\\Test\\input.txt”,“a+”);

          fprintf(fp,“%s”,a);

参考资料:[1]谭浩强《c程序设计》

                  [2]百度百科

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值