2016-10-16 3 views
0

J'ai un problème avec l'obtention de données correctes dans un contenu char *. Je veux lire à partir du fichier son contenu, remplir mon tampon avec lui, et être en mesure de déférer char ** contenu à l'adresse du tampon. Et puis obtenir ses données de contenu char * dans la principale ... Qu'est-ce que je fais mal à ce jour?Lecture d'un fichier avec fopen: un caractère ** est-il retourné correctement?

#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

Vous 'tampon [30]' est détruit au retour de 'charge (....)' – user3159253

+0

Vous devriez allouer une zone mémoire dynamiquement allouée (par exemple en utilisant [malloc] (https://linux.die.net/man/3/malloc) et lire le contenu du fichier dans cette mémoire – user3159253

+0

Merci pour l'explication! –

Répondre

0

Votre fonction de charge devrait ressembler à ceci:

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

Merci pour la réponse! J'ai en effet oublié malloc ... –

+0

Vous êtes les bienvenus – Module

+0

Ne * PAS * lancer le retour de 'malloc', c'est inutile Voir: [** Dois-je lancer le re sult of malloc? **] (http://stackoverflow.com/q/605845/995714) pour une explication complète. –