2

時間が表示されるようにキーログ出力をフォーマットしようとしています:

        t = time(0);
        now = localtime(&t);


        if(now->tm_min != prevM && now->tm_hour != prevH)
        {
            prevM = now->tm_min;
            prevH = now->tm_hour;

            fwrite("[", 1, sizeof(WCHAR), keylog);
            fwrite(&prevH, 1, sizeof(int), keylog);
            fwrite("]", 1, sizeof(WCHAR), keylog);
            fwrite(" ", 1, sizeof(WCHAR), keylog);
            fflush(keylog);
        }

しかし、読み取り可能な数値の代わりに、「[ DLE NUL ]」がファイルに書き込まれます.DLENULは疑問符です。

読みやすい数字を書くにはどうすればよいですか?

4

4 に答える 4

5

fprintf他の人も提案しているように使用してください。

理由:
fwrite通常、同じタイプのデータのブロックを書き込むためにバイナリ ファイルに書き込むために使用されます。

書き込んでいるデータは文字列のように見えfprintfます。次の構文を使用して、完全なデータをファイルに書き込むことができます。

 fprintf(keylog, "[%d] ", prevH);

ワイド文字を書いているようです(を使用しているようですwchar)。それに応じて、さまざまな形式指定子を使用できます。

于 2013-10-13T14:45:58.030 に答える
3

それ以外の

fwrite(&prevH, 1, sizeof(int), keylog);

試す

fprintf(keylog, "%d", prevH);
于 2013-10-13T14:40:35.990 に答える
3

fwriteバイナリ表現を保存しています。テキスト表現を保存したい場合は、 を使用できますfprintf

于 2013-10-13T14:27:39.210 に答える
1

他の人がすでに示唆しているように、テキストをファイルに書き込むときに fprintf を使用できます。

より具体的には、WCHAR を記述するときは、次のいずれかを使用できます。

fwprintf(file, L"%c\n",outputChar);

また:

fprintf(file, "%lc", outputChar);

詳細については、関数のドキュメントを参照してください: http://www.cplusplus.com/reference/cwchar/fwprintf/

于 2013-10-13T15:57:40.683 に答える