2016-10-16 7 views
0

У меня возникла проблема с получением правильных данных в содержимом char *. Я хочу читать из файла его содержимое, заполнять его буфером и уметь ссылаться на содержимое символа ** на адрес буфера. И затем получить свои данные из содержимого char * в главном ... Что я делаю неправильно до сих пор?Чтение из файла с fopen: является ли 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); 

} 
+2

Вы 'буфер [30]' разрушается при возвращении из 'нагрузки (....)' – user3159253

+0

Вы должны выделить область, в динамически распределенной памяти (например, с помощью [malloc] (https://linux.die.net/man/3/malloc) и чтения содержимого файла в эту память – user3159253

+0

Спасибо за разъяснение! –

ответ

0

Ваша функция нагрузки должна выглядеть примерно так:

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); 

} 
+0

Спасибо за ответ! malloc ... –

+0

Добро пожаловать. – Module

+0

Do * NOT * отбрасывает возврат 'malloc', это необязательно. См.: [**. sult of malloc? **] (http://stackoverflow.com/q/605845/995714) для подробного объяснения. –

 Смежные вопросы

  • Нет связанных вопросов^_^