-2

行列を乗算する時間をカウントする関数を作成しました。それはコードです:

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<сЪР?」と書かれていました。何が悪いのか教えてください。

4

3 に答える 3

2

人間が読めるものではなく、バイナリ表現をファイルに書き込んでいます。

使用する:

fprintf(file, "%f", min);
于 2012-10-10T08:34:59.080 に答える
0

fprintf(file, "%f", min);または同様のものを使用してファイルに書き込んでみてください( などlfの代わりにf)。

を使用して値のバイナリ表現を書きましたfwriteが、10 進表現が必要です。

ファイルに対してa を使用hexdumpし、浮動小数点の標準に従って結果を解釈すると、予想される数値が返されます。

于 2012-10-10T08:35:14.310 に答える
0

fwritedouble意味のないいくつかの文字であるのバイナリ表現を書き込みます。

代わりに使用できますfprintf

fprintf(file, "%lf", min)

于 2012-10-10T08:36:16.643 に答える