我有一个文件没有任何新的行字符。它是一个连续的字节流文件。假设整个文件的大小是100 is。如果nth Kb有'0A',那么读取的文件就会终止(尽管我给出了n+10字节,它还是以第n个字节结束),尽管它不是实际的新行字符。我想全面阅读100 in。怎么做?
我正在使用fget来读取文件。
发布于 2018-09-27 08:13:55
显示你的密码。
您不能使用字符串函数读取二进制数据,当然,它们的反应会像输入是字符串一样。
当然,在分配缓冲区之后,请使用fread()。
典型的尝试可能是这样的:
void * load_file(const char *filename, size_t *length)
{
FILE * const f = fopen(filename, "rb");
if (f == NULL)
return NULL;
void *buf = NULL;
if (fseek(f, 0, SEEK_END) == 0)
{
const long size = ftell(f);
if (fseek(f, 0, SEEK_SET) == 0)
{
if ((buf = malloc(size)) != NULL)
{
const size_t got = fread(buf, size, 1, f);
if (got < size)
{
free(buf);
buf = NULL;
}
else if (length != NULL)
*length = size;
}
}
}
fclose(f);
return buf;
}上面的内容没有经过测试,但应该作为一个不错的大纲。
当然,调用方必须在完成缓冲区后对其进行free()。
https://stackoverflow.com/questions/52532281
复制相似问题