C语言文件读写操作

本文介绍了C语言中文件读写的基本操作,包括格式化文件读写,适用于处理如图像矩阵数据和查找表等场景;同时,通过一个数据结构体的例子讲解了块数据的读写方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言的文件读写分为很多种,详细操作可参考 http://blog.youkuaiyun.com/jiji262/article/details/1835971

由于近期频繁程序生成数据进行读写操作,便于查找方便,将常用代码记录下来。

1. 格式化文件读写,经常使用在需要保存格式化的数据(比如图像矩阵数据)以及查找表操作等场合。

示例代码如下:

int OperateFile()
{
		// ***********C语言写CSV文件操作测试****************
	char filename[255];
	sprintf(filename,"d:/writefile.csv");
	FILE *wfile;
	
	if ((wfile=fopen(filename,"w+"))==NULL)
	{
		printf("can not new the file\n");
		exit(0);
	}
	    
	//把512*512大小数据存储为CSV文件,以矩阵形式排列
	for (int rows =0; rows < 512; rows++)
	{
		for (int cols = 0;cols < 512; cols ++)
		{
			fprintf(wfile,"%d,",rows + cols);
		}
		fprintf(wfile,"\n");//换行
	}
	fclose(wfile);
	//**********************************************

	//***************读文件操作测试*****************

	char filename2[255];
	sprintf(filename2,"d:/writefile.csv");

	//读取文件的数组
	int *readdata;
	readdata=(int *)malloc(sizeof(int)*512*512);

	//定义文件指针
	FILE *rfile;
	if ((rfile = fopen(filename2,"r"))==NULL)
	{
		printf("can not open the file");
		exit(0);
	}

	//把512*512大小数据存CSV文件读取出来,以一维数组排列
	for (int num =0; num < 512*512; num++)
	{
		fscanf(rfile,"%d,",&readdata[num]);
		//cout<<readdata[num]<<endl;
	}

	fclose(rfile);
	free(readdata);
	//*************************************************
	return 0;
}



2.块数据读写操作,下面以一个数据结构体的信息读写为例。

int OperateBlockFile()
{
	//定义一个数据结构,包含姓名,年龄,身高
	struct friends
	{
		char name[255];
		int age;
		int height;
	}fri;

	//****************将块数据写入txt文件****************
	//定义文件指针
	FILE *savefile;
	char filename[255]="d:/block.txt";

	if ((savefile=fopen(filename,"wb"))==NULL)
	{
		printf("can not open the file\n");
		exit(0);
	}
	//输入两组朋友信息
	for (int frinum = 0; frinum<2; frinum++)
	{
		printf("请输入朋友%d的姓名,年龄,身高信息\n",frinum);
		scanf("%s %d  %d",fri.name,&fri.age,&fri.height); //输入信息
		fwrite(&fri,sizeof(fri),1,savefile); // 成块写入文件
	}
	fclose(savefile);

	//*************************************************


	//****************从txt文件读取块信息**************
	//定义读文件指针
	FILE *readfile;
	friends fri2;

	if((readfile=fopen("d:/block.txt","rb"))==NULL)
	{ /*重新以二进制只写打开文件*/
		printf("cannot open file");
		exit(0);
	}

	printf("output from file d:/block.txt \n");
	for (int i=0;i<2;i++)
	{
		fread(&fri2,sizeof(fri),1,readfile); /* 从文件成块读*/
		printf("%s %d %d \n",fri2.name,fri2.age,fri2.height); /* 显示到屏幕*/
	}
	fclose(readfile);
	//**********************************************


	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值