c ++中的fwrite()有些错误

时间:2012-10-10 08:32:38

标签: 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&lt;сЪР?”。请告诉我有什么问题。

3 个答案:

答案 0 :(得分:2)

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

使用:

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

答案 1 :(得分:0)

尝试使用fprintf(file, "%f", min);或类似内容(lf代替f等)写入文件。

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

如果您在文件上使用hexdump并根据浮点标准解释结果,您将获得预期的数字。

答案 2 :(得分:0)

fwrite将编写double的二进制表示,这些字符是无意义的。

您可以改为使用fprintf

fprintf(file, "%lf", min)