c语言 读程序写入结构体,C语言文件写入结构体的乱码解决方法

C语言中用 fwrite 向文件写入结构体时出现乱码的解决方法,由于fwrite是用于二进制文件的,所以打开直接写入的文件是会出现乱码,这时需要一个中间文件来存储临时数据,就是先将数据存储在一个临时文件,然后从这个数据中读取出来在写入目标文件。也许我描述的不是很好,下面看看我写的一个例子或许你就会明白我说的是什么了。

#include

int main ()

{

FILE * pFile;

FILE * temp;

double xvalue, yvalue;

struct punto{

float x;

float y;

} pto;

xvalue = 1;

temp = fopen("temp.aux", "w+");

int i;

for(i = 0; i < 10; i++){

pto.x = i;

pto.y = 0;

fwrite(&pto, sizeof(pto), 1, temp);

}

pFile = fopen ("myfile.txt", "w+");

rewind(temp);

fread(&pto, sizeof(pto), 1, temp);

while(!feof(temp)){

//pto.x = xvalue;

pto.y = rand()%100;

fprintf(stdout, "%f %f\n", pto.x, pto.y);

fprintf(pFile, "%f %f\n", pto.x, pto.y);

fseek(temp, -sizeof(pto), SEEK_CUR);

fwrite(&pto, sizeof(pto), 1, temp);

fread(&pto, sizeof(pto), 1, temp);

sleep(1);

}

fclose(temp);

remove("temp.dat");

fclose(pFile);

return 0;

}

运行结果:

0.000000 83.000000 1.000000 86.000000 2.000000 77.000000 3.000000 15.000000 4.000000 93.000000 5.000000 35.000000 6.000000 86.000000 7.000000 92.000000 8.000000 49.000000 9.000000 21.000000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值