用C语言逐行编写文件

用C语言逐行编写文件,c,input,output,C,Input,Output,我目前正试图让我的代码按照文件打印的方式将数据写入文件。 由于某些原因,当我随后打开文本文件时,只有二进制数据。 如何将其转换为可读格式 代码: #包括 void calcData(浮点*x,浮点*y){ 浮动tmpX、tmpY、a、b; a=2.75; b=0.2; tmpX=*x; tmpY=*y; *x=tmpY; *y=(-b*tmpX)+(a*tmpY)-(tmpY*tmpY*tmpY); 回来 } int main(){ 文件*datei; 浮动x=0.5; 浮动y=0.5; int

我目前正试图让我的代码按照文件打印的方式将数据写入文件。
由于某些原因,当我随后打开文本文件时,只有二进制数据。
如何将其转换为可读格式

代码:

#包括
void calcData(浮点*x,浮点*y){
浮动tmpX、tmpY、a、b;
a=2.75;
b=0.2;
tmpX=*x;
tmpY=*y;
*x=tmpY;
*y=(-b*tmpX)+(a*tmpY)-(tmpY*tmpY*tmpY);
回来
}
int main(){
文件*datei;
浮动x=0.5;
浮动y=0.5;
int i;
对于(i=0;i
当我随后打开文本文件时,只有二进制数据

因为做

您可以编写浮动的内部表示形式

例如,前两个值是x=0.500000和y=1.150000,它们的内部表示是0x3f000000和0x3f933333(IEEE浮点数在32b上)。因此,当您编写支持其值的4个字节的内存时(取决于尾数),您将按相反顺序写入代码0x3f 0x0 0x0 x和0x3f 0x93 0x33 0x33 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);
移动到循环之后

您应该使用
fprintf
–就像使用
printf
“将数据完全按照打印方式写入文件”.这是什么意思?写入文件和打印文件有什么区别。“打印方式”与“写入方式”完全相同。另一种方法是重定向程序输出,例如
myprogram>txt.txt
OT:about:
float x=0.5;
float y=0.5;
a=2.75;
b=0.2;
声明的文本是
双倍的
,而不是
浮起
,使
浮起,然后
浮起
st包含尾随的
f
,例如:
0.2f
#include <stdio.h>

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);

    }
}
   fwrite(&x,1,sizeof(float),datei);
   ..
   fwrite(&y,1,sizeof(float),datei);
fprintf(datei, "%f\t%f\n", x, y);