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;
}