作者:jzcoijawlkmlzkm_307 | 来源:互联网 | 2022-10-23 20:30
我目前正在尝试获取代码,以完全按照打印数据的方式将数据写入文件。
由于某些原因,当我之后打开文本文件时,只有二进制数据。
如何将其转换为可读格式?
码:
#include
void calcData(float *x,float* y){
float tmpX,tmpY,a,b;
a = 2.75;
b = 0.2;
tmpX = *x;
tmpY = *y;
*x = tmpY;
*y = (-b*tmpX) + (a*tmpY) - (tmpY*tmpY*tmpY);
return;
}
int main(){
FILE *datei;
float x = 0.5;
float y = 0.5;
int i;
for(i=0;i<1000;i++){
calcData(&x,&y);
printf("%f \t %f \n",x,y);
datei=fopen("txt.txt","a");
fwrite(&x,1,sizeof(float),datei);
fwrite("\t",1,sizeof(char),datei);
fwrite(&y,1,sizeof(float),datei);
fwrite("\n",1,sizeof(char),datei);
fclose(datei);
}
}
bruno..
6
之后,当我打开文本文件时,只有二进制数据。
因为在做
fwrite(&x,1,sizeof(float),datei);
..
fwrite(&y,1,sizeof(float),datei);
您编写浮点数的内部表示形式。
例如,前两个值是x = 0.500000和y = 1.150000,它们的内部表示形式是0x3f000000和0x3f933333(IEEE浮点数在32b上)。因此,当您根据字节序fwrite支持其值的4个字节的内存时,您会以相反的顺序编写代码0x3f 0x0 0x0 0x0(针对x)和0x3f 0x93 0x33 0x33(针对y)
如何将其转换为可读格式?
做
fprintf(datei, "%f\t%f\n", x, y);
就像你做的一样 printf("%f \t %f \n",x,y);
(请注意,printf("%f \t %f \n",x,y);
实际上fprintf(stdout, "%f \t %f \n",x,y);
,因此,如果这是标准输出的正确方法,则它也位于文件中)
这也是更好地移到datei=fopen("txt.txt","a");
前循环和fclose(datei);
后循环
1> bruno..:
之后,当我打开文本文件时,只有二进制数据。
因为在做
fwrite(&x,1,sizeof(float),datei);
..
fwrite(&y,1,sizeof(float),datei);
您编写浮点数的内部表示形式。
例如,前两个值是x = 0.500000和y = 1.150000,它们的内部表示形式是0x3f000000和0x3f933333(IEEE浮点数在32b上)。因此,当您根据字节序fwrite支持其值的4个字节的内存时,您会以相反的顺序编写代码0x3f 0x0 0x0 0x0(针对x)和0x3f 0x93 0x33 0x33(针对y)
如何将其转换为可读格式?
做
fprintf(datei, "%f\t%f\n", x, y);
就像你做的一样 printf("%f \t %f \n",x,y);
(请注意,printf("%f \t %f \n",x,y);
实际上fprintf(stdout, "%f \t %f \n",x,y);
,因此,如果这是标准输出的正确方法,则它也位于文件中)
这也是更好地移到datei=fopen("txt.txt","a");
前循环和fclose(datei);
后循环