当前位置:网站首页>c语言文件基本操作总结
c语言文件基本操作总结
2022-08-09 23:42:00 【BSP初级小学僧】
博客主页:https://blog.csdn.net/weixin_46094737?type=blog
欢迎评论留言 如有错误敬请指正!
本文由小学生廉原创,首发于 CSDN
未来很长,值得我们全力奔赴更美好的生活!
一、文件
在对计算机的使用中我们几乎离不开文件。例如常见的有word 文档,txt文本文件,图片文件、音频文件等。
1.什么是文件?
文件是以计算机硬盘为载体存储在计算机上的信息集合。是数据源的一种,最主要的作用是保存数据。
在程序设计中,我们可将文件分为两大类:程序文件和数据文件
(1)程序文件
包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序文件(windows环境后缀为.exe)。
(2)数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
2.文件名
文件名是文件存在的标识,操作系统根据文件名来对其进行控制和管理。每个文件都被设定一个指定的名称,由文件主名和扩展名组成。
即:一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含三个部分:文件路径+文件名主干+文件后缀
例:D:\Windows Kits\10\Lib\test.txt
二、文件的打开和关闭
1.文件指针
我们对文件进行一系列的操作——打开文件、关闭文件、向文件中写入数据、从文件中读出数据。所有的操作都离不开文件指针。
文件指针: FILE*
FILE:每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中,取名FILE。
FILE* :通过一个FILE的指针来维护这个FILE结构的变量,对文件进行操作。
(1)fopen函数
在C语言中,操作文件之前应该先打开文件。使用 <stdio.h> 头文件中的 fopen() 函数可以打开文件。
FILE *pf=NULL;
pf=fopen("test.txt","r"); //只读(2)fclose函数
在执行完文件的操作后,要用 fclose() 函数进行“关闭文件”操作。以此释放相关资源,避免数据丢失。同时也可提高系统整体的执行效率。
fclose() 的用法为:fclose(FILE *fp);
fclose(pf);
文件的打开方式分为以下几类:
| 文件打开方式 | 含义 | 若指定文件不存在 |
| “r”(只读) | 打开一个存在的文本文件,然后读取数据 | 出错 |
| “w”(只写) | 打开一个存在的文本文件,然后写入数据(注意会清空) | 创建一个新文件 |
| “a”(追加) | 在文本文件最后追加数据 | 出错 |
| “r+”(读写) | 打开一个文本文件,可读可写 | 出错 |
| “w+”(读写) | 打开一个文本文件,可读可写 | 创建一个新文件 |
| “a+”(读写) | 打开一个文本文件,可读可写,在文本最后追加数据 | 创建一个新文件 |
三、文件的顺序读写
打开文件后要对文件进行具体的操作,以下为文件的读写函数
| 功能 | 函数名 |
|---|---|
| 字符输入函数 | fgetc |
| 字符输出函数 | fputc |
| 文本行输入函数 | gets |
| 文本行输出函数 | fputs |
| 格式化输入函数 | fscanf |
| 格式化输出函数 | fprintf |
| 二进制输入 | fread |
| 二进制输出 | fwrite |
在使用时注意两个fread函数以及fwrite函数的用法
fread(目标读入,类型字节数,开辟读入空间,被读取文件)
fwrite(目标写入,类型字节数,开辟写入空间,写入文件)
fread函数
fread(str02,1,5,pf);
fwrite函数
FILE *pf;
char str[]="123456";
char str02[20];
pf=fopen("fire_fread.txt","w");
fwrite(str,1,7,pf);
fclose(pf);练习源代码:
#include <stdio.h>
void fire_test(void)
{
FILE *pf=NULL;
pf=fopen("test.txt","r"); //只读
pf=fclose;
pf=fopen("test.txt","w");//只写
fputc('a',pf);
pf=fopen("test.txt","a");//追加
fputc('1',pf);//在文件你内容后面追加写入一个字符'1';
pf=fopen("test.txt","r");
printf("指针pf的地址为:%#p\n",pf);
char ch;
ch=fgetc(pf);
printf("%c",ch);
fclose(pf);
pf=fopen("test02.txt","r");
printf("指针pf的地址为:%#p\n",pf);
if(NULL==pf)
{
printf("无此文件!");
}
else
{
fputc(50,pf);
}
}
void fire_fputs(void)
{
char str[20]="换羽重生!";
FILE *pf;
pf=fopen("fire_fputs.txt","w");
fputs(str,pf);
fputc('\n',pf);
fputs("首战必胜!",pf);
fclose(pf);
}
void fire_a(void)
{
char str[20]="test r-w-a";
FILE *pf;
pf=fopen("fire_fputs.txt","a");
fputs(str,pf);
fclose(pf);
}
void fire_fgets(void)
{
char str[40];
printf("str=%s\n",str);
FILE *pf;
pf=fopen("fire_fgets.txt","r");
if(NULL==pf)
{
printf("无此文件");
}
else
{
fgets(str,40,pf);
}
printf("str=%s",str);
fclose(pf);
}
void fire_fread(void)
{
FILE *pf;
char str[]="123456";
char str02[20];
pf=fopen("fire_fread.txt","w");
fwrite(str,1,7,pf);
fclose(pf);
pf=fopen("fire_fread.txt","r");
fread(str02,1,5,pf);
printf("%s",str02);
fclose(pf);
}
int main()
{
fire_fread();
// fire_test();
// fire_fputs();
// fire_fgets();
// fire_a();
return 0;
}边栏推荐
猜你喜欢

Leetcode82. 删除排序链表中的重复元素 II

聚焦热点 | ISC 2022软件供应链安全治理与运营论坛圆满落幕

为什么不建议你在 Docker 中跑 Mysql ?

深入理解Aarch64内存管理

pytest:如何在测试中编写和报告断言

dlopen failed: library "libtaml.so" not found

共创 Ray 中文社区,Ray Forward Meetup 2022 直播邀你参加!

拒绝“重复造轮子”,百度EasyDL让你玩转AI定制开发

2022中高级Android面试题汇总来助你通过面试
![MATLB|And her ups and downs and finally reached the peak of life [Romantic Journey]](/img/10/55cc34a929768d89d9ffde8a5b3419.png)
MATLB|And her ups and downs and finally reached the peak of life [Romantic Journey]
随机推荐
go语言的并发原理(goroutine)
pytest:如何在测试中编写和报告断言
游泳馆系统次卡的设置有哪些细节?
JSP简介
【C语言】通讯录《静态内存版本》
ES6 Beginner to Mastery #13: Extension Methods for Arrays 2
无源晶振负载电容值CL匹配方法及说明
Alibaba Cloud SMS Service Activation
【obs】obsqsv11 硬编 及与metartc codec对比
Next.js获取路由参数及styled-jsx 的使用
Leetcode80. 删除有序数组中的重复项 II
ES6 Beginner to Mastery #15: Generator Usage
Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
阿里云短信服务开通
RebatMq消息中间件(一) 各个中间件介绍
生成树和交换的总结
[C language] In-depth understanding of pointers and arrays (issue 4)
Golden Warehouse Database KingbaseGIS User Manual (6.6. Geometric Object Verification Function, 6.7. Spatial Reference System Function)
dlopen failed: library “libtaml.so“ not found
阿雷的血压有些低