fwrite读写乱码解决方法
fwrite读写乱码
int Input()
{
FILE *with_control_file = NULL;
int write_length = 0;
with_control_file=fopen("with_control.txt","wb");
if(with_control_file == NULL)
{
return 0;
}
write_length = fwrite(pow_panel_array[i].double_data,sizeof(short),512, with_control_file);
printf("write_length = %d\n", write_length);
fclose(with_control_file);
with_control_file = NULL;
return 0;
}

------解决思路----------------------
你写入的是一个double而不是char,肯定是乱码了,不然你输出时用printf的格式化%d干嘛?直接%s不好吗?
------解决思路----------------------
想用记事本看的话请使用 fprintf。
------解决思路----------------------
一般檔案的操作會用 char / unsigned char 的 Array 方式來存取,這樣在進行 fwrite/fread 時格式也會一致。
你的 pow_panel_array 有甚麼資料?或都說 struct 是長怎樣?
------解决思路----------------------
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决思路----------------------
http://bbs.****.net/topics/390676437
------解决思路----------------------
这可不是二进制,你在输出的时候没加空格,所有的数都连在一起了。
int Input()
{
FILE *with_control_file = NULL;
int write_length = 0;
with_control_file=fopen("with_control.txt","wb");
if(with_control_file == NULL)
{
return 0;
}
write_length = fwrite(pow_panel_array[i].double_data,sizeof(short),512, with_control_file);
printf("write_length = %d\n", write_length);
fclose(with_control_file);
with_control_file = NULL;
return 0;
}
------解决思路----------------------
你写入的是一个double而不是char,肯定是乱码了,不然你输出时用printf的格式化%d干嘛?直接%s不好吗?
------解决思路----------------------
想用记事本看的话请使用 fprintf。
------解决思路----------------------
一般檔案的操作會用 char / unsigned char 的 Array 方式來存取,這樣在進行 fwrite/fread 時格式也會一致。
你的 pow_panel_array 有甚麼資料?或都說 struct 是長怎樣?
------解决思路----------------------
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决思路----------------------
http://bbs.****.net/topics/390676437
------解决思路----------------------
这可不是二进制,你在输出的时候没加空格,所有的数都连在一起了。