c - 使用 fopen 读取文件 : is a char** returned correctly?

标签 c char fgets

我在获取 char* 内容中的正确数据时遇到问题。我想从文件中读取其内容,用它填充缓冲区,并能够将 char** 内容引用到缓冲区的地址。然后从 main 中的 char* 内容获取其数据...到目前为止我做错了什么?

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

void load(FILE* file, char** content, size_t* length);

int main()
{
    FILE* file = fopen("file.txt", "r");

    char* content;
    size_t length = 0;

    load(file, &content, &length);

    printf("%s\n", content);
    printf("%lu\n", length);
}

void load(FILE* file, char** content, size_t* length)
{
    char buffer[30];

       fgets(buffer, 30, file);
       *content = buffer;
       *length = strlen(buffer);

}

最佳答案

您的加载函数应如下所示:

void load(FILE* file, char** content, size_t* length)
{
    char *buffer;
    buffer = (char*)malloc(30*sizeof(char));

       fgets(buffer, 30, file);
       *content = buffer;
       *length = strlen(buffer);

}

关于c - 使用 fopen 读取文件 : is a char** returned correctly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075103/

相关文章:

java - MicroEJ UART 和其他 GPIO 中断与 STM32F746G-DISCO

检查一个数字是否是 C 中两个平方的和

c - C 中字符数据的二维数组的“压缩”输入

c++ - 如何将字符变量存入二维字符变量

c - 当从单独的线程调用时,如何从 fgets 获得正确的输出?

objective-c - 是什么导致此命令行错误?

c - 使用 SSE 加速 lower_bound 函数

c++ - 与非指针相比,char 指针初始化?会发生什么

c - 为什么不是 scanf ("%*[^\n]\n");和 scanf ("%*[^\n]%*c");清除挂起的换行符?

php - 响应XML包含 “2000 ”和 “20a0”字符