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 回答