gpt4 book ai didi

c - 读取未知大小的文件内容

转载 作者:太空狗 更新时间:2023-10-29 15:53:23 26 4
gpt4 key购买 nike

我想处理配置文件的内容。配置文件可以是任意大小。程序挂起后,当我运行以下代码时出现总线错误:

FILE *fp;
struct stat st;
char *buffer;

fp = fopen(CONFIG_FILE, "r");
if (fp == NULL) {
// error handling and cleanup omitted for brevity
}

fstat(fileno(fp), &st);
fread(buffer, sizeof(char), st.st_size, fp);
fprintf(stderr, "%s\n", *buffer);
fclose(fp);

我读到总线错误可能是由缓冲区溢出引起的。我很确定我的 char *buffer 发生了缓冲区溢出。但是,我如何在运行时指定缓冲区的大小?

编辑 - 总线错误是由于我懒惰地在 fread 调用中对 1 进行硬编码造成的。代码示例已更新以解决此问题,改为使用 sizeof(char)

最佳答案

使用malloc(3) .放:

buffer = malloc(st.st_size);

在调用 fread() 之前。完成后不要忘记释放 buffer!

您可能也不想在 printf() 调用中使用 *buffer。如果您要尝试像这样打印整个文件,您将需要确保分配一个额外的字节来以 null 终止您的字符串。

关于c - 读取未知大小的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com