文件的使用详解
Posted 萌新的日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件的使用详解相关的知识,希望对你有一定的参考价值。
(文章目录)
一、文件的分类
二、文件的打开和关闭
1.文件指针
2.文件打开
(1).文件打开方式
2.文件关闭
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","w");//打开文件
if(pf==NULL)//文件打开失败就报错
perror("fopen");
return 1;
fclose(pf);//关闭文件
pf=NULL;
return 0;
三、文件的顺序读写
1.字符输出函数——fputc
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","w");//打开text.txt文件 以写的方式
if(pf==NULL)//判断文件是否打开失败
perror("fopen");
return 1;
fputc(a,pf);//将字符传递到流中
foutc(b,pf);
fputc(c,pf);
fclose(pf);//关闭文件
pf=NULL;
return 0;
2.字符输入函数——fgetc
#define _CRT_SECURE_NO_WARNINGS//在VS中关闭文件所要求的
#include<stdio.h>
int main()
FILE*pf=fopen("test.txt","r");//从文件test.txt中读
if(pf==NULL)//假设test.txt里面为abcd
perror("fopen");
return 1;
int ret=fgetc(pf);
printf("%c\\n",ret);//a
ret=fgetc(pf);
printf("%c\\n",ret);//b
ret=fgetc(pf);
printf("%c\\n",ret);//c
fclose(pf);
pf=NULL;
return 0;
3.文本行输出函数——fputs
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","w");
if(pf==NULL)
perror("fopen");
return 1;
fputs("abcdef\\n",pf);
fputs("qwerty\\n",pf);
fclose(pf);
pf=NULL;
return 0;
4.文本行输入函数——fgets
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","r");//假设文件中为abcdefg
if(pf==NULL)
perror("fopen");
return 1;
char arr[40=0;
fgets(arr,4,pf);
printf("%s\\n",arr);//a b c
fgets(arr,4,pf);
printf("%s\\n",arr);// d e f
fclose(pf);
pf=NULL;
return 0;
5.格式化输出函数——fprintf
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct S
char name[20];
int age;
char sex[20];
int main()
struct S s="张三",18,"男");
FILE*pf=fopen("test.txt","w");
if(pf==NULL)
perror("fopen");
return 1;
fprintf(pf,"%s %d %s",s.name,s.age,s.sex);
fclose(pf);
pf=NULL;
return 0;
6.格式化输入函数——fscanf
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct S
char name[20];
int age;
char sex[20];
int main()
struct S s="张三",18,"男");
FILE*pf=fopen("test.txt","r");
if(pf==NULL)
perror("fopen");
return 1;
fscanf(pf,"%s %d %s",s.name,&(s.age),s.sex);//读文件
printf("%s %d %s\\n",s.name,s.age,s.sex);//打印
fclose(pf);
pf=NULL;
return 0;
7.二进制输出函数———fwrite
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct S
char name[20];
int age;
char sex[20];
int main()
struct S s="张三",18,"男");
FILE*pf=fopen("test.txt","w");
if(pf==NULL)
perror("fopen");
return 1;
fwirte(&s,sizeof(struct S),1,pf);
fclose(pf);
pf=NULL;
return 0;
7.二进制输入函数———fread
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct S
char name[20];
int age;
char sex[20];
int main()
struct S s="张三",18,"男");
FILE*pf=fopen("test.txt","r");//读文件
if(pf==NULL)
perror("fopen");
return 1;
fread(&s,sizeof(struct S),1,pf);
printf("%s" "%d" "%s",s.name,s.age,s.sex);打印
fclose(pf);
pf=NULL;
return 0;
三、文件的随机读写
1.fseek
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","r");//这里是从已经存好数据的文件中读
if(pf==NULL)//假设文件中为abcdef
perror("fopen");
return 1;
int ret=fgetc(pf);
printf("%c\\n",ret);//a
fseek(pf,-2,SEEK_END);
ret=fgetc(pf);
printf("%c\\n",ret);//e
ret=fgetc(pf);
printf("%c\\n",ret);//f
fclose(pf);
pf=NULL;
return 0;
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","r");//这里是从已经存好数据的文件中读
if(pf==NULL)//假设文件中为abcdef
perror("fopen");
return 1;
int ret=fgetc(pf);
printf("%c\\n",ret);//a
fseek(pf,2,SEEK_SET);
ret=fgetc(pf);
printf("%c\\n",ret);//c
ret=fgetc(pf);
printf("%c\\n",ret);//d
fclose(pff);
pf=NULL;
return 0;
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","r");//这里是从已经存好数据的文件中读
if(pf==NULL)//假设文件中为abcdef
perror("fopen");
return 1;
int ret=fgetc(pf);
printf("%c\\n",ret);//a
fseek(pf,2,SEEK_CUR);//来到这里时已经指向b的流 所以从b开始向后2个
ret=fgetc(pf);
printf("%c\\n",ret);//d
ret=fgetc(pf);
printf("%c\\n",ret);//e
fclose(pf);
pf=NULL;
return 0;
2.ftell
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","r");//这里是从已经存好数据的文件中读
if(pf==NULL)//假设文件中为abcdef
perror("fopen");
return 1;
int ret=fgetc(pf);
printf("%c\\n",ret);//a
fseek(pf,-1,SEEK_END);
ret=fgetc(pf);//f
printf("%c\\n",ret);//相对于起始位置的偏移量为5
fclose(pf);
pf=NULL;
return 0;
3.rewind
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
FILE*pf=fopen("text.txt","r");//这里是从已经存好数据的文件中读
if(pf==NULL)//假设文件中为abcdef
perror("fopen");
return 1;
int ret=fgetc(pf);
printf("%c\\n",ret);//a
fseek(pf,-1,SEEK_END);
rewind(pf);//文件指针回到起始位置
ret=fgetc(pf);
printf("%c\\n",ret);//a
fclose(pf);
pf=NULL;
return 0;
四.文件读取的判定
以上是关于文件的使用详解的主要内容,如果未能解决你的问题,请参考以下文章