一.文件的打开与关闭
#include<stdio.h>
#include<errno.h>
int main()
{
//打开文件
FILE* pf= fopen("tset.txt","w");
if(pf==NULL)
{
printf("%s\n",strerror(errno));
return 0;
}
//关闭文件
fclose(pf);
pf=NULL;
return 0;
}
二.文件的顺序读写
1.int fputc(int c,FILE* stream);(写文件)
字符输出函数,fputc,适用于所有输出流;
#include<stdio.h>
#include<errno.h>
int main()
{
//打开文件
FILE* pf= fopen("tset.txt","w");
if(pf==NULL)
{
printf("%s\n",strerror(errno));
return 0;
}
//写文件
fputc('z',pf);
fputc('y',pf);
//关闭文件
fclose(pf);
pf=NULL;
return 0;
}
2.int fgetc(FILE*stream);(读文件)
字符输入函数,fgetc,适用于所有输入流;
#include<stdio.h>
#include<errno.h>
int main()
{
//打开文件
FILE* pf= fopen("tset.txt","r");
if(pf==NULL)
{
printf("%s\n",strerror(errno));
return 0;
}
//读文件
int ch=fgetc(pf);
printf("%c",ch);
ch=fgetc(pf);
printf("%c",ch);
//关闭文件
fclose(pf);
pf=NULL;
return 0;
}
3.cahr*fgets(cahr*string , int n,FILE*stream);(读文件)
文本行输入函数,fgets,适用于所有输入流
#include<stdio.h>
#include<errno.h>
int main()
{
char buf[1024]={0};
//打开文件
FILE* pf= fopen("tset.txt","r");
if(pf==NULL)
{
printf("%s\n",strerror(errno));
return 0;
}
// 读文件
fgets(buf,1024,pf);
printf("%s",buf);//操作一行数据(写一次就读一行)
//....
//关闭文件
fclose(pf);
pf=NULL;
return 0;
}
4.int fputs(const char* string,FILE*stream);(写文件 )
文本输入函数,fputs,适用于所有输入流;
#include<stdio.h>
#include<errno.h>
int main()
{
//打开文件
FILE* pf= fopen("tset.txt","w");
if(pf==NULL)
{
printf("%s\n",strerror(errno));
return 0;
}
//写文件
fputs("hello\n",pf);//操作一行数据
fputs("world\n",pf);//操作一行数据
//关闭文件
fclose(pf);
pf=NULL;
return 0;
}
5.gets()与puts()
#include<stdio.h>
int main ()
{
cahr buf[1024]={0};
//fgets(buf,1024,stdin);//从标准输入流读取
//fputs(buf,stdout);//输出到标准输出流
gets(buf);
puts(buf);
return 0;
}
6.int fpritf(FILE*stream,const char*format [,argument]...);(写文件)
格式化的形式写文件
#include<stdio.h>
#include<errno.h>
struct S
{
int n;
float score;
charr arr[10];
};
int main()
{
struct S s={100,3.14f,"bit"};
FILE* pf=fopen("tset.txt","w");
if(pf== NULL)
{
printf("%s\n",strerror(errno));
}
//格式化的形式写文件
fprintf(pf,"%d %f %s",s.n,s.score,s.arr);
fclose(pf);
pf = NULL;
return 0;
}
7.int fscanf(FILE*stream,const cahr*format[,argument]...);(读文件)
格式化的形式写文件
#include<stdio.h>
#include<errno.h>
struct S
{
int n;
float score;
charr arr[10];
};
int main()
{
struct S s={0};
FILE* pf=fopen("tset.txt","r");
if(pf== NULL)
{
printf("%s\n",strerror(errno));
}
//格式化的形式输出数据
fscanf(pf,"%d %f %s",&(s,n),&(s.score),&(s,arr));
printf("%d %f %s",s.n,s.score,s.arr);
fclose(pf);
pf = NULL;
return 0;
}
8.int sprintf(cahr* buffer, const cahr*format[,argument]...)
int sscanf(const cahr*buffer, const cahr*format[,argument]...)
#include<stdio.h>
struct S
{
int n;
float score;
charr arr[10];
};
int main()
{
struct S s={100,3.14f,"bit"};
cahr buf[1024]={0};
struct S tmp={0};
//把格式化的数据转换成字符串存储到buf
sprintf(buf,"%d %f %s",s.n,s.score,s.arr);
//printf("%s\n",buf);
//从buf中读取格式化的数据到tmp中
sscanf(buf,"%d %f %s",&(tmp.n),&(tmp.score),&(tmp.arr));
printf("%d %f %s\n",tmp.n,tmp.s,tmp.arr);
return 0;
}
9.scanf/printf 是针对标准输入流/标准输出流的 格式化输入/输出语句
fscanf/fprintf是针对所有输入流/所有输出流的 格式化输入/输出语句
sscanf sscanf是从字符串中读取格式化的数据;
sprintf sprintf是把格式化数据输出成(存储到)字符串
10.二进制的形式写文件
size_t fwrite(conts void*buffer,size_t size,size_t count,FILE*stream);
#include<stdio.h>
#include<errno.h>
struct S
{
char name[20];
int age;
double score;
};
int main ()
{
struct S s = {"张三", 20 ,55.6};
FILE*pf=fopen("tset.txt","wb");
if(pf == NULL)
{
printf("%S\n",strerror(errno));
}
//二进制的形式写文件
fWrinte(&s,sizeof(struct S),1,pf);
fclose(pf);
pf = NULL
return 0;
}
11.size_t fread(void *buffer,size_t,size_t const ,FILE*stream);
#include<stdio.h>
#include<errno.h>
struct S
{
char name[20];
int age;
double score;
};
int main ()
{
struct S tmp = {0};
FILE*pf=fopen("tset.txt","rb");
if(pf == NULL)
{
printf("%S\n",strerror(errno));
}
//二进制的形式读文件
fread(&tmp,sizeof(struct S),1,pf);
printf("%s %d %lf\n",tmp.name,tmp.age,tmp.score);
fclose(pf);
pf = NULL
return 0;
}
文章评论