1·fprintf/fscanf
·fprintf: 向文件中写入数据–fprintf(fp,"%d",a)
·fscanf: 读取文件数据–fscanf(fp,"%d %c",&i ,str)
//fprintf实例
#include<iostream>
#include<cstdlib>
int main()
{
// fprint 向文件中写入数据 fprint(fp,"%d %c",a,b);
// fscanf 读取文件数据 scanf(fp,"%d %c", &i,str)i是一个整型常量,str是一个字符型变量
int a[6];//数据为整形
int i;
FILE* fp;
fp=fopen("liuliguang.txt","w");//打开文件,w表示只写
if(fp==NULL)
{
printf("文件打不开");
exit(0);
}
printf("请输入6个整数(以空格隔开):\n");
for(i=0;i<6;i++)
{
scanf("%d",&a[i]);//将这6个数据保存在字符串中
}
printf("输入的数字为:\n");
for(i=0;i<6;i++)
{
fprintf(fp,"%d\t",a[i]);//将字符串输入的数据格式化并保存在打开的文件中
printf("%d",a[i]) ;
}
fclose(fp);
return 0;
}
//fscanf用法
#include<iostream>
#include<cstdlib>
int main()
{
char str1[30],str2[30],str3[30];
int year;
FILE * fp;
fp=fopen("liu.txt","w+");
fputs("We are in 2021",fp);//向文件中写入数据
//fflush(fp);
rewind(fp);
fscanf(fp,"%s %s %s %d",str1,str2,str3,&year);
printf("we can see string1 %s\n",str1);
printf("we can see string2 %s\n",str2);
printf("we can see string3 %s\n",str3);
printf("we can see figure %d\n",year);
fclose(fp);
return 0;
}
//综合应用
#include<iostream>
#include<cstdlib>
#define N 2
typedef struct date
{
char name[20];
char sx[10];
int age;
double score;
}date;
date boya[N];//写入文件
date boyb[N];//读取文件
date *pa,*pb;//定义两个指针一个用来写入文件,一个用来读取文件
int main()
{
FILE *fp;
int i;
pa=boya;
pb=boyb;//初始化指针
if((fp=fopen("liuliguang.txt","w+"))==NULL)
{
printf("不存在!");
exit(0);
}
//从键盘中输入,保存在boya中
printf("请输入数据:\n");
for(i=0;i<N;i++)
{
scanf("%s %s %d %lf",pa->name,pa->sx,&pa->age,&pa->score);
pa++;//指针不断向后移动,为了储存不同学生的信息
}
pa=boya;//pa指针返回boya的地址
//将boys的数据写入到磁盘文件中
for(i=0;i<N;i++)
{
fprintf(fp,"%s %s%d %lf\n",pa->name,pa->sx,pa->age,pa->score);
pa++;
}
//重置文件指针指向
rewind(fp);
//从文件中读取数据到程序中的boyb
for(i=0;i<N;i++)
{
fscanf(fp,"%s %s %d %lf\n",pb->name,pb->sx,&pb->age,&pb->score);
pb++;
}
pb=boyb;
//最后输出数据
for(i=0;i<N;i++)
{
printf("%s %s %d %f\n",pb->name,pb->sx,pb->age,pb->score);
pb++;
}
fclose(fp);
return 0;
}