我正在尝试格式化我的键盘输出,以便显示时间:
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是问号。
如何编写可读数字?
答案 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/