编程技术是改变世界的力量。
本站
当前位置:网站首页 > 后端语言 > 正文

C语言——文件的操作(c语言文件四大步骤)

gowuye 2024-04-25 04:44 5 浏览 0 评论

文件的操作,可以理解为输出输入终端为文件,通常我们的输入输出都是显示屏,其实原理一样,都是先将数据写入到内存,然后在从内存写到终端(显示器或者文件)

文件操作的主要步骤

1、打开文件,得到将要操作的文件的指针

2、设置文件指针的位置,打开文件时,默认指向文件的开头,以追加方式打开文件时,指向文件的末尾

3、读写文件

4、关闭文件,切记不要忘了这一步,否则造成输入、输出的内容不能正常保存到文件,因为,计算机向文件中保存文件,是先将数据写到缓冲区,当缓冲区满了之后,再一起写入到文件,所以如果忘了,可能造成文件内容确实,也可以写文件写完后,刷新以下缓存,fflush()。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define SUCCESS 1

#define ERROR -65535

/*文件使用方式

1、r(只读),若使用该方式打开文件,则只能读取文件中的内容,另外打开的文件必须是已经存在的文件,若不存在,会提示错误。

2、w(只写),若使用该方式打开文件,则只能向文件中写数据,若打开的是一个已经存在的文件,会先删除原来文件的内容,用新的文件内容覆盖,若打开的文件不存在,会创建一个该名字的文件,并写入数据

3、a(追加),打开一个文件,将新的内容插入到原来内容的末端,若打开的文件不存在,会提示错误

4、b(二进制文件),通常和r,b,w结合起来使用,只是打开文件的文件是一个二进制的文件,默认的是文本文件

5、r+(读写),打开一个已经存在的文件,读或者写内容进去,注意该文件必须已经存在

6、w+(读写),新建一个文件,文件可以存在,也可以不存在,若存在,则先删除源原文件内容,再写入新的内容

7、a+(读写),打开一个存在的文件,新的内容插入到原来内容后面

*/

/*文件操作的步骤

1、打开文件,返回文件的指针fopen("filepath","mode")

2、操作文件,读写操作fread、fwrite、fgets、fputs、fgetc、fputc、fscanf、fprintf

3、关闭文件fclose(*fp)

*/

/*文件操作常用的函数

1、ch = fgetc(fp),从文件中读取一个字符,返回给ch,遇到文件结束符,返回EOF(-1)

2、fputc(ch,fp),向文件中写入一个字符,将字符ch写入到文件中,写成功,返回写入的字符;写失败,返回EOF(-1)

注意:打开文件的时候,文件指针指向开头的地方,读取一个或者写一个,指针向后移动,到达文件尾部,有一个文件结束符EOF

3、fread(buff,size,count,fp);从文件中读取内容,buff保存从文件中读取的内容,size是单个buff结构的大小,count表示一次要从文件中读取多少个这样的结构,fp表示文件指针,size决定了每次从文件中读取多少字节的内容

4、fwrite(buff,size,count,fp);向文件中写入内容,buff保存从文件中读取的内容,size是单个buff结构的大小,count表示一次要从文件中读取多少个这样的结构,fp表示文件指针,size决定了每次从文件中读取多少字节的内容

5、fprintf(fp,格式字符串,输出列表),格式化输出,和printf用法一样,只不过这个用于将内容格式化输出到磁盘文件上,而不是格式化输出到终端上

6、fscanf(fp,格式字符串,地址列表),格式化输出,和scanf用法一样,只不过这个用于从磁盘文件上读取数据保存在指定的地址上

文件的定位,文件指针的定位

7、rewind(fp):将文件指针指向文件的开头位置

8、fseek(fp,偏移量,文件指针起始位置),将文件指针按照起始位置作位置偏移,文件指针的起始位置可以有三种:起始位置(SEEK_SET 0)、当前位置(SEEK_CUR 1)、末尾位置(SEEK_END 2)

9、ftell(fp),返回文件指针当前的位置,相对于文件头位置的偏移量。通过这三个函数,组合可以返回文件的字节数,先将文件指针置于末端,然后返回文件指针的位置,即可得到文件的大小

*/

/*只写的方式打开一个不存在的文件,会提示错误*/

#if 0

int main()

{

FILE *pFile = NULL;

pFile = fopen("./file.txt","r");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

fclose(pFile);

return SUCCESS;

}

#endif

/*只读的方式打开一个不存在的文件,若文件不存在,会创建一个新文件*/

#if 0

int main()

{

FILE *pFile = NULL;

pFile = fopen("./file.txt","w");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个文件,若文件不存在,会创建一个新文件,向文件中写入一个字符串*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[255] = {"hello,this is ducument operation!\r\n"};

int len = strlen(buff);

int i = 0;

pFile = fopen("./file.txt","w");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

/*逐个字符的往文件中写入*/

for(i = 0;i < len;i++)

{

fputc(buff[i],pFile);

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,读取文件中的一个字符*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[100];

int i = 0;

char ch;

pFile = fopen("./file.txt","r");

if(pFile == NULL)

{

printf("the file open failed!\r\n");

return ERROR;

}

while((ch = fgetc(pFile)) != EOF)

{

buff[i] = ch;

++ i;

if(i >= 99)

{

break;

}

}

buff[i] = '\0';

printf("%s",buff);

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,向文件中写入内容*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[255] = {"hello,this is ducument operation!\r\n"};

pFile = fopen("file.txt","w");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

if(fwrite(buff,10,3,pFile) != 3)//向文件中写入10个字节的数据到缓冲区,写入3次,说明总共写入了30个字节

{

printf("write file failed!\r\n");

}

fclose(pFile);

return SUCCESS;

}

#endif

/*打开一个已存在的文件,读取文件中的内容*/

#if 0

int main()

{

FILE *pFile = NULL;

char buff[100];

memset(buff,0,sizeof(buff));

pFile = fopen("file.txt","r");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

if(fread(buff,10,2,pFile) != 2)//从文件中读取10个字节的数据到缓冲区,读取2次,说明总共读取了20个字节

{

printf("read file failed!\r\n");

}

printf("%s",buff);

fclose(pFile);

return SUCCESS;

}

#endif

/*通过文件指针的操作,获取文件中文件的大小*/

#if 1

int main()

{

int len = 0;

FILE *pFile = NULL;

pFile = fopen("file.txt","r");

if(pFile == NULL)

{

printf("open file failed!\r\n");

return ERROR;

}

fseek(pFile,0,SEEK_SET);//将文件指针置于文件开头的地方

fseek(pFile,0,SEEK_END);//将文件指针置于文件末尾的地方

len = ftell(pFile);

printf("file len is %d",len);

return SUCCESS;

}

#endif

相关推荐

Nginx 响应提速10倍,你需要知道的缓存性能优化——FastCGI调优
Nginx 响应提速10倍,你需要知道的缓存性能优化——FastCGI调优

Nginx缓存优化是帮助大家提升网站性能的重要操作之一,proxy_cache主要用于反向代理时,对后端内容源服务器进行缓存;fastcgi_cache主要用于...

2024-05-20 14:44 gowuye

王者荣耀天魔缭乱和逐梦之音返场活动地址 3月22日开启返场活动
王者荣耀天魔缭乱和逐梦之音返场活动地址 3月22日开启返场活动

王者荣耀官方终于确定了天魔缭乱和逐梦之音的返场活动,这让不少小伙伴乐开了花,返场活动将会在3月22日开启,下面就带来王者荣耀天魔缭乱和逐梦之音返场活动地址!王者...

2024-05-20 14:44 gowuye

常见的嵌入式web服务器有哪些?

嵌入式WEB服务器常见的有:Lighttpd,Shttpd,Thttpd,Boa,Mini_httpd,Appweb,Goahead。Lighttpd地址:http://www.light...

简述几款常见的嵌入式web服务器
简述几款常见的嵌入式web服务器

嵌入式web服务器,是web服务器当中的一种,是基于嵌入式系统而实现的web服务器。指的是在嵌入式系统(通俗点就是单片机系统)上实现的一个web服务器,可以通过...

2024-05-20 14:44 gowuye

教你如何利用fastcgi_cache缓存加速WordPress

在使用nginx缓存之前,必须在nginx里面加载专门的模块,这个模块叫做ngx_cache_purge。添加ngx_cache_purge模块下载ngx_cache_purge模块ngx_cache...

扫描WordPress漏洞

检测已知漏洞WPScan是一款广泛使用的WordPress安全扫描工具,它的一项重要功能是检测已知漏洞。在这篇文章中,我们将深入探讨WPScan如何检测已知漏洞,并结合实际示例,帮助读者更好地理解和应...

消灭 Bug!推荐几个给力的开源 Bug 跟踪工具
消灭 Bug!推荐几个给力的开源 Bug 跟踪工具

在这个充满bug的世界里,最遥远的距离不是生与死,而是你亲手制造的bug就在你眼前,你却怎么都找不到它。因此本文准备了7款优秀的开源bug跟踪系...

2024-05-20 14:43 gowuye

生物信息分析入门全攻略

生物信息学是生命科学研究的重大前沿领域,未来将占据生命科学研究的半壁江山。已经有越来越多的小伙伴投入到生物信息的学习中,但是入门难、深入慢、摸不到方向等都成为持续学习的拦路虎。本文根据生物信息技术大牛...

elkb实践经验,再赠送一套复杂的配置文件
elkb实践经验,再赠送一套复杂的配置文件

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。宝剑锋从磨砺出,梅花香自苦寒来。诗人白居易,三月下江南,看到沿路开放的桃花,心潮澎湃...

2024-05-20 14:43 gowuye

超详细从0到1 搭建ELK监控
超详细从0到1 搭建ELK监控

监控分类?Metrics用于记录可聚合的数据。例如,1、队列的当前深度可被定义为一个度量值,在元素入队或出队时被更新;HTTP请求个数可被定义为一个计数器,...

2024-05-20 14:42 gowuye

嵌入式开发 之Web配置页面开发
嵌入式开发 之Web配置页面开发

1.PHP是最好的语言??开发动态页面首选的语言是PHP,村村不能在这里忽悠人,如果你的硬件性能允许切略懂PHP,看到这里就可以退出了。本文面向的受众是Linu...

2024-05-20 14:42 gowuye

Python开发一个网站目录扫描工具用来检测网站是否有漏洞?
Python开发一个网站目录扫描工具用来检测网站是否有漏洞?

开发一个网站目录扫描工具是用来检测网站是否有非法目录请求的一个常见需求之一,我们要通过这个扫描工具来找到通过某个域名可以访问到的网站路径,可能对于有些系统来讲,...

2024-05-20 14:42 gowuye

创建一个类似Youtube的Id——使用PHP/Python/JS/Java/SQL

id通常都是用数字,不巧的是只有10个数字来使用,所以如果你有很多的记录,id往往变得非常冗长。当然对于计算机来说无所谓,但我们更希望id尽可能短。所以我们如何能使id变短?我们可以利用字母让它们附加...

快速云:有助于移动应用安全开发的五条妙计
快速云:有助于移动应用安全开发的五条妙计

许多企业不断地向其开发团队提供培训。但是某些漏洞,如早在十多年前就发现的SQL注入,如今仍广泛存在于各种应用中。因而,安全培训永不过时。在开发移动应用时,开发者...

2024-05-20 14:41 gowuye

洛杉矶国际电影节最佳动画短片奖影片《G’DAY》正式全网上映
洛杉矶国际电影节最佳动画短片奖影片《G’DAY》正式全网上映

7月2日,由M&CSaatchi创作,由深受好评的澳大利亚导演迈克尔·格雷西执导的动画短片《G’day》,正式在全网上映。该影片因其出色的创意赢得了洛...

2024-05-20 14:41 gowuye

取消回复欢迎 发表评论: