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<сЪР?请告诉我出了什么问题。>

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

用:

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

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

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

如果对文件使用hexdump并根据浮点标准解释结果,则会得到预期的数字。

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

您可以改用fprintf

fprintf(file, "%lf", min)

最新更新