写点什么

C 语言 _ 文件 IO 操作函数总结

作者:DS小龙哥
  • 2022 年 5 月 15 日
  • 本文字数:2304 字

    阅读完需:约 8 分钟

当前文章涉及 C 语言文件操作相关知识点。列出最常见的文件操作函数、fopen、fread、fwrite、fclose 等。通过几个常见需求,写出例子理解文件操作函数的用法。

1. 文件 IO 总结

文件IO操作:  对文件系统里的文件进行:  打开、创建、读、写、关闭等运用。C语言下标准文件IO接口(函数): (1)头文件:  stdio.h    输入输出函数:  printf 、scanf(2)相关函数:  fopen、fread、fwrite、fclose2.1 标准文件操作有两套函数:1.标准C语言下的文件操作接口。fopen系列常用于:  对普通文件的读写。2.Linux操作系统下的文件操作接口。open系列常用于:  对设备文件进行读写。 (鼠标、键盘、声卡、..)
复制代码

2. C 语言标准文件操作接口

2.1 最常用的 4 个函数

#include <stdio.h>//打开文件FILE *fopen(const char *path, const char *mode); //读文件size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);//写文件size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);//关闭文件int fclose(FILE *fp);
复制代码

2.3 写函数的基本运用

#include <stdio.h>#include <stdlib.h>#include <string.h>
int main(){ FILE *file; int cnt; /*1. 打开文件*/ file=fopen("D:/123.txt","a+b"); if(file==NULL) { printf("文件打开失败!\n"); return -1; } /*2. 写数据*/ cnt=fwrite("1234567890",1,10,file); /*3. 关闭文件*/ fclose(file);
printf("cnt=%d\n",cnt); return 0;}
复制代码

2.4 读函数基本运用

#include <stdio.h>#include <stdlib.h>#include <string.h>
int main(){ FILE *file; int cnt; char buff[100];
/*1. 打开文件*/ file=fopen("D:/123.txt","rb"); //malloc if(file==NULL) { printf("文件打开失败!\n"); return -1; } /*2. 写数据*/ cnt=fread(buff,1,100,file); /*3. 关闭文件*/ fclose(file); //free
buff[cnt]='\0'; printf("%s\n",buff); printf("cnt=%d\n",cnt); return 0;}
复制代码

2.5 文件指针位置偏移 (自动向后偏移)

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){  FILE *file;  int cnt;  char data;
/*1. 打开文件*/ file=fopen("D:/123.txt","rb"); //malloc if(file==NULL) { printf("文件打开失败!\n"); return -1; } /*2. 读数据---验证文件指针是否可否自动向后偏移*/ cnt=fread(&data,1,1,file); printf("data=%c\n",data); cnt=fread(&data,1,1,file); printf("data=%c\n",data); cnt=fread(&data,1,1,file); printf("data=%c\n",data); cnt=fread(&data,1,1,file); printf("data=%c\n",data); cnt=fread(&data,1,1,file); printf("data=%c\n",data);
/*3. 关闭文件*/ fclose(file); //free return 0;}
复制代码

2.6 设置文件指针位置

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){  FILE *file;  int cnt;  char data;
/*1. 打开文件*/ file=fopen("D:/123.txt","rb"); //malloc if(file==NULL) { printf("文件打开失败!\n"); return -1; } /*2. 偏移文件指针*/ fseek(file,5,SEEK_SET);
/*3. 读数据---验证文件指针是否可否自动向后偏移*/ cnt=fread(&data,1,1,file); printf("data=%c\n",data);
/*4. 关闭文件*/ fclose(file); //free return 0;}
复制代码

2.7 以上午所学的函数,如何判断文件读完了?到文件结尾?


#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ FILE *file; int cnt; char data;
/*1. 打开文件*/ file=fopen("D:/123.txt","rb"); //malloc if(file==NULL) { printf("文件打开失败!\n"); return -1; } /*2. 偏移文件指针*/ fseek(file,5,SEEK_SET);
/*3. 读数据---验证文件指针是否可否自动向后偏移*/ while(1) { cnt=fread(&data,1,1,file); if(cnt!=1)break; printf("data=%c\n",data); } /*4. 关闭文件*/ fclose(file); //free return 0;}
复制代码

2.8 文件读写结构体数据

//写结构体数据#include <stdio.h>#include <stdlib.h>#include <string.h>struct MyStruct{  int a;  int b;  char c[100];};
int main(){ FILE *file; int cnt; struct MyStruct stu={666,888,"C语言文件操作学习"};
/*1. 打开文件*/ file=fopen("D:/123.txt","wb"); if(file==NULL) { printf("文件打开失败!\n"); return -1; }
/*2. 读数据*/ cnt=fwrite(&stu,1,sizeof(struct MyStruct),file); printf("cnt=%d\n",cnt);
/*3. 关闭文件*/ fclose(file); //free return 0;}
//读结构体数据#include <stdio.h>#include <stdlib.h>#include <string.h>struct MyStruct{ int a; int b; char c[100];};
int main(){ FILE *file; int cnt; struct MyStruct stu;
/*1. 打开文件*/ file=fopen("D:/123.txt","rb"); if(file==NULL) { printf("文件打开失败!\n"); return -1; }
/*2. 读数据*/ cnt=fread(&stu,1,sizeof(struct MyStruct),file); printf("cnt=%d\n",cnt);
printf("%d,%d,%s\n",stu.a,stu.b,stu.c); /*3. 关闭文件*/ fclose(file); //free return 0;}
复制代码

2.9 文件操作的作业练习

1.  学习文件基本读写使用2.  编写文件拷贝程序。 实现文件拷贝。3.  文件加密解密实现。 需要编写一个菜单。4.   完善学生管理系统。需要将所有学生信息保存到文件里,完善功能。
复制代码


发布于: 刚刚阅读数: 2
用户头像

DS小龙哥

关注

之所以觉得累,是因为说的比做的多。 2022.01.06 加入

熟悉C/C++、51单片机、STM32、Linux应用开发、Linux驱动开发、音视频开发、QT开发. 目前已经完成的项目涉及音视频、物联网、智能家居、工业控制领域

评论

发布
暂无评论
C语言_文件IO操作函数总结_5月月更_DS小龙哥_InfoQ写作社区