C/C++读写文本文件、二进制文件的方法

2020-01-06 19:11:08王旭

一:目的

掌握C语言文本文件读写方式;

掌握C语言二进制文件读写方式;

掌握CPP文本文件读写方式;

掌握CPP二进制文件读写方式;

二:C语言文本文件读写

1. 文本文件写入


//采用C模式对Txt进行写出
void TxtWrite_Cmode()
{
	//准备数据
	int index[50] ;
	double x_pos[50], y_pos[50];
	for(int i = 0; i < 50; i ++ )
	{
		index[i] = i;
		x_pos[i] = rand()%1000 * 0.01 ;
		y_pos[i] = rand()%2000 * 0.01;
	}
	//写出txt
	FILE * fid = fopen("txt_out.txt","w");
	if(fid == NULL)
	{
		printf("写出文件失败!n");
		return;
	}
	for(int i = 0; i < 50; i ++ )
	{
		fprintf(fid,"%03dt%4.6lft%4.6lfn",index[i],x_pos[i],y_pos[i]);
	}
	fclose(fid);
}

2. 文本文件读取


//采用C模式对Txt进行读取
void TxtRead_Cmode()
{
	FILE * fid = fopen("txt_out.txt","r");
	if(fid == NULL)
	{
		printf("打开%s失败","txt_out.txt");
		return;
	}
	vector<int> index;
	vector<double> x_pos;
	vector<double> y_pos;
	int mode = 1;
	printf("mode为1,按字符读入并输出;mode为2,按行读入输出;mode为3,知道数据格式,按行读入并输出n");
	scanf("%d",&mode);
	if(mode == 1)
	{
		//按字符读入并直接输出
		char ch;  //读取的字符,判断准则为ch不等于结束符EOF(end of file)
		while(EOF!=(ch= fgetc(fid)))
			 printf("%c", ch); 
	}
	else if(mode == 2)
	{
		char line[1024];
		memset(line,0,1024);
		while(!feof(fid))
		{
			fgets(line,1024,fid);
			printf("%sn", line); //输出
		}
	}
	else if(mode == 3)
	{
		//知道数据格式,按行读入并存储输出
		int index_tmp;
		double x_tmp, y_tmp;
		while(!feof(fid)) 
		{ 
			fscanf(fid,"%d%lf%lfn",&index_tmp, &x_tmp, &y_tmp);
			index.push_back(index_tmp);
			x_pos.push_back(x_tmp);
			y_pos.push_back(y_tmp);
		}
		for(int i = 0; i < index.size(); i++)
			printf("%04dt%4.8lft%4.8lfn",index[i], x_pos[i], y_pos[i]);
 
	}
	fclose(fid);
}