您的位置:首页 > 编程语言 > C语言/C++

C语言文件读写操作

2014-04-27 13:29 330 查看
c语言的文件读写分为很多种,详细操作可参考 http://blog.csdn.net/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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据读写