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
#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
相关文章推荐
- Eclipse中properties文件读取时中文乱码、指定更新、写入中文变unicode码的解决方法
- 关于C语言fprintf()函数将纯数据写入文件速度慢的解决方法
- 深入C语言把文件读入字符串以及将字符串写入文件的解决方法
- Python 2.7 解决写入文件的中文乱码问题
- Python实现的json文件读取及中文乱码显示问题解决方法
- properties文件乱码解决方法
- php导入csv文件碰到乱码问题的解决方法
- google docs api 文件标题乱码解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- .net 编译器错误信息: CS0016: 未能写入输出文件 解决方法
- 彻底解决Moodle上传文件中文文件名乱码解决方法
- C语言中将结构体写入文件
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- log4j日志文件乱码问题的解决方法
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
- log4j日志文件乱码问题的解决方法
- Java读取、写入文件如何解决乱码问题
- struts2实现文件下载所出现的乱码,解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- ResourceBundle (读取properties文件及中文乱码解决方法)