当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
随机推荐
生成树和交换的总结
程序员从佩洛西窜访事件中可以学到什么?
Leetcode81. 搜索旋转排序数组 II
阿里云短信服务开通
Fury:一个基于JIT动态编译的高性能多语言原生序列化框架
考柏的感慨
Service Discovery @EnableDiscoveryClient
【Infiltration tool】Browser data export tool
abicc 知:API compatibility report 介绍
数字钱包红海角逐,小程序生态快速引入可助力占领智慧设备入口
Kubernetes服务接入Istio
GoLang 使用 goroutine 停止的几种办法
技术分享 | 接口自动化测试如何处理 Header cookie
蔚来杯2022牛客暑期多校训练营7 CFGJ
NTU General Database-Gbase-8a-Learning-04-Deploying Distributed Clusters
C语言学习之旅 【操作符(残缺版)】
使用C语言实现静态链表
conda新建环境时报错NotWritableError: The current user does not have write permissions
Distributed database problem (3): data consistency
[NCTF2019]True XML cookbook-1|XXE漏洞