520c语言程序,有一组2500行,520列的数据,怎样将C语言读入程序中?

你的意思是行的数据出现类型重复,而不是列的数据类型相同???这样的话用结构体是可以的,这样的结构体你需要定义4个不同大小的数组成员.你只要改一下缓冲区的大小和fread,fwrite的参数即可.每次读取一个结构体大小的数据块,这样也不错.以上代码我已经按你的意思修改了.你看看可以不?

#include

#define BUFF_LENGTH 520*(sizeof(char)+sizeof(int)+sizeof(float)+sizeof(double)) /*定义缓冲区大小,为各结构体成员数组所占空间的大小之和*/

typedef struct

{

char ch_D[520]; /*假设第一行数据类型为char型*/

int int_D[520]; /*假设第二行数据类型为int型*/

float flot_D[520]; /*假设第三行数据类型为float型*/

double doub_D[520]; /*假设第四行数据类型为double型.此后的数据类型重复以上四种类型.各种类型你可以修改*/

} *DataStruct;

void main()

{

FILE *fp_in,*fp_out; /*定义两个文件指针,一个用于从文件中读取数,另一个用于向另一个文件写入处理后的数据*/

char sourcefile[30],destination[30]; /*源文件,目的文件的路径及文件名*/

char buff[BUFF_LENGTH]; /*读入的数据放在内存中的位置*/

DataStruct buff; /*将缓冲区buff的结构改为结构体形式,也就是把buff格式化为所定义的结构体形式*/

puts("==>请输入您要读取的文件所在的路径和文件名!");

scanf("%s",sourcefile);

puts("==>请输入您要保存到的文件所在路径和文件名!");

scanf("%s",destination);

fp_out=fopen(sourcefile,"r"); /*打开文件,准备读内容*/

fp_in=fopen(destination,"a+"); /*打开文件,准备写入内容*/

if(fp_in==NULL||fp_out==NULL) /*检查是否打开错误*/

{

puts("打开文件出错,请检查您的输入");

return ;

}

while(!feof(fp_out)) /*只要要读的数据没有完,继续循环,直至读完*/

{

fread(buff,BUFF_LENGTH,1,fp_out); /*把数据读入缓冲区中*/

ProcessData(); /*这个函数的代码你自己写吧,不知道你要怎么样处理所读入的数据;如果你只是要读入数据的话,那么你只需要把buff的大小定义成足够大,然后用指针将地址递增就行就可以全部读入了*/

fwrite(buff,BUFF_LENGTH,1,fp_in); /*把修改过的缓冲区中的数据保存到另一个文件中*/

fflush(fp_in); /*立即写入*/

}

fclose(fp_out); /*关闭文件指针*/

fclose(fp_in);

puts("文件操作成功完成");

}

以上拙见,请高手指正.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值