无法使用fwrite将int写入文件

时间:2013-10-13 14:23:35

标签: c fwrite

我正在尝试格式化我的键盘输出,以便显示时间:

        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 个答案:

答案 0 :(得分:5)

使用fprintf,正如其他人也建议的那样。

原因:
fwrite通常用于写入二进制文件以写入相同类型数据的块。

您正在编写的数据看起来像一个字符串,您可以使用fprintf以下语法将完整数据写入文件。

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

您似乎正在编写宽字符(当您使用wchar时)。您可以相应地使用不同的格式说明符。

答案 1 :(得分:3)

使用fwrite存储二进制表示。如果要存储文本表示,可以使用fprintf

答案 2 :(得分:3)

而不是

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

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

答案 3 :(得分:1)

正如其他人已经建议的那样,在将文本写入文件时可以使用fprintf。

更具体地说,在编写WCHAR时,您可以使用:

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

或:

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

有关更多信息,请查看该函数的文档: http://www.cplusplus.com/reference/cwchar/fwprintf/