1-文件读写

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; 

 } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值