我需要在文件中輸出一個double值。 因此,對於我所有的其他字符串,我必須放棄使用fputs,因爲我認爲它的計算速度快於fprintf。fputs vs. fprintf和double
但是,如果我想把雙倍值我不能這樣做與fputs,所以我試過fprintf。這非常慢。我需要更多的時間,如果我替換fprintf並放置一個fputs(「TEST」,文件);
我怎樣才能把雙倍的字符串一樣快。需要我先將它轉換爲字符串?
我發現了一些轉換。但是,如果我使用它們,我就像使用fprintf一樣慢。
那麼我怎麼能把這個double放到一個文件中如此快呢,就好像我把一個字符串放到了文件中一樣?
fputs("TEST",fileout); //FAST
fprintf(fileout, "%f",p); //SLOW
編輯:
次雙fprintf中:
END.PROCESSING.DATA: 2013-04-26 08:10:33.000
END.CALC.IN.FILE: 2013-04-26 08:11:13.000
倍的fputs字符串:
END.PROCESSING.DATA: 2013-04-26 08:14:10.000
END.CALC.IN.FILE: 2013-04-26 08:14:37.000
該次代碼:
now = time (0);
strftime (buff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&now));
printf ("END.PROCESSING.DATA: %s\n", buff);
//output file
FILE *fileout;
fileout = fopen("out.txt","w");
double p;
for(i=0; i<17000;i++){
for(j=0; j<i;j++){
for(z=0;z<400;z++){
//DO SOME WORK
}
p = 1.0;
fputs(allsubsts[i],fileout);
fputs(";",fileout);
fputs(allsubsts[j],fileout);
fputs(";",fileout);
//fprintf(fileout, "%.21g", p);
fputs("TEST",fileout);
fputs(";\n",fileout);
}
}
fclose(fileout);
now = time(0);
strftime(buff,100,"%Y-%m-%d %H:%M:%S.000", localtime(&now));
printf("END.CALC.IN.FILE: %s\n",buff);
時間之間的變化只是我把double而不是TEST字符串放在文件中的變化。
該文件是否需要人類可讀? – 2013-04-25 15:19:53
1.它是文本文件還是二進制文件? 2.'%f'爲'float','%lf'爲'double'。 – Crozin 2013-04-25 15:22:35
@Crozin:不,'%f'和'%lf'都是雙重的。沒有辦法將'float'傳遞給'fprintf'。 – 2013-04-25 15:23:23