Can';t使用fwrite将int写入文件

Can';t使用fwrite将int写入文件,c,fwrite,C,Fwrite,我正在尝试格式化keylog输出,以便它显示时间: t = time(0); now = localtime(&t); if(now->tm_min != prevM && now->tm_hour != prevH) { prevM = now->tm_min; prevH = now->tm_hour;

我正在尝试格式化keylog输出,以便它显示时间:

        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);
        }
但我的文件中没有可读的数字,而是写了“[DLENUL]”,其中DLENUL是问号


如何编写可读数字?

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

而不是

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


按照其他人的建议,使用fprintf

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

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

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

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

正如其他人所建议的,您可以在将文本写入文件时使用fprintf

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

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

有关更多信息,请参阅函数的文档:

查找。
fprintf(keylog,[%d:%d]”,prevH,prevM)
解决了这个问题,但是现在当我在写文件时,我从键盘
fwrite(&outputChar,1,sizeof(WCHAR),keylog)得到了什么
在我的输出中,我将字符与空符号组合在一起,因为它是wchari,有办法解决这个问题吗?我尝试使用不同的说明符,但我的输出总是像“[17:13]tNULLeNULLsNULLtNULL”。如果我写chars而不是wchars,一切都可以,但是我需要wchars。你真的需要文件中的wchars吗?如果是这样,请使用
fwprintf
和friends(您也必须以不同的方式打开文件)。但我怀疑你实际上根本不应该使用wchars。ISO C宽/多字节字符特性是在我们还没有弄清楚如何正确处理i18n的时候设计的,它显示了;在狭窄的字符串中使用UTF-8几乎总是更好的,可以手动使用,也可以使用第三方库(例如),其设计相当于工作的真正复杂性。
fwprintf(file, L"%c\n",outputChar);
fprintf(file, "%lc", outputChar);