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

C语言文件写入结构体的乱码解决方法

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

#include <stdio.h>

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: