【发布时间】:2014-06-26 12:17:14
【问题描述】:
以下代码将一个无符号字符数组(定义为byte)写入文件:
typedef unsigned char byte;
void ToFile(byte *buffer, size_t len)
{
FILE *f = fopen("out.txt", "w");
if (f == NULL)
{
fprintf(stderr, "Error opening file!\n");
exit(EXIT_FAILURE);
}
for (int i = 0; i < len; i++)
{
fprintf(f, "%u", buffer[i]);
}
fclose(f);
}
如何将文件从out.txt 读回byte 的缓冲区?目标是通过byte 迭代缓冲区byte。谢谢。
【问题讨论】:
-
如果你想读回来,我不会用
%u写出来。%u将是可变宽度输出,所以1需要一个字符,12需要两个字符,依此类推。当你读回来看到112你不知道那是不是三个字符( 1, 1, 2) 或两个 (11, 2; 或 1, 12) 或仅一个 (112)。如果您需要 ASCII 文件,您将使用固定宽度的输出,例如%03u。这样每个字节总是 3 个字符。然后您可以使用fscanf("%03u", buffer[i])一次读取一个字节。 -
嘿@lurker 谢谢!我怎样才能接受这个作为答案?您的帖子帮助我了解了我需要做什么。
-
谢谢。我将其发布为答案,这是我最初应该做的。