2012-10-10 99 views
-2

我写了乘法矩阵计算时间的函数。这是代码:在C++中有一些fwrite()错误

if ((file = fopen("../logs.txt","w")) != NULL) 
{ 
    for(int i = 0; i < 5; ++i) 
    { 
     if(QueryPerformanceCounter(&start) !=0) 
     { 
      mult(m1, m2, m3); 
      QueryPerformanceCounter(&finish); 
      double temp = (double)(finish.QuadPart - start.QuadPart)/frequency.QuadPart; 
      if(temp<=min || min == 0) 
       min = temp; 
     } 
    } 
    fwrite(&min, sizeof(min), 1, file); 
    fclose(file); 
} 

当我调试它,我看到我的最短时间等于0.26336317888614069,但在文件中它被写了“2W <сЪР?”。请告诉我什么是错的。

回答

2

您正在将二进制表示写入文件,而不是可读的文件。

用途:

fprintf(file, "%f", min); 
+0

它的工作。感谢名单! – Kukambara

0

试着写使用fprintf(file, "%f", min);或类似的东西(lf而不是f等)到文件。

您使用fwrite编写了值的二进制表示,但您需要十进制表示法。

如果你在文件上使用hexdump并根据浮点标准解释结果,你会得到你想要的数字。

0

fwrite将编写double的二进制表示,它们是无意义的一些字符。您可以使用fprintf代替。

fprintf(file, "%lf", min)