2016-10-16 2 views
0

Ich habe ein Problem mit dem Erhalten korrekter Daten in einem char * Inhalt. Ich möchte aus der Datei ihren Inhalt lesen, meinen Puffer damit füllen und char ** Inhalt auf die Adresse des Puffers abstimmen können. Und dann bekommst du seine Daten vom char * Content im main ... Was mache ich bisher falsch?Lesen aus einer Datei mit fopen: ist ein char ** korrekt zurückgegeben?

#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

Sie 'Puffer [30]' nach der Rückkehr von 'Last zerstört wird (....)' – user3159253

+0

sollten Sie einen Bereich zuweisen in dynamisch zugewiesenen Speicher (zB mit [malloc] (https://linux.die.net/man/3/malloc) und lesen Sie den Inhalt der Datei in diesen Speicher – user3159253

+0

Vielen Dank für die Erklärung! –

Antwort

0

Ihre Ladefunktion sollte wie folgt aussehen:

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

Vielen Dank für die Antwort! Ich habe wirklich vergessen malloc ... –

+0

Gern geschehen .. – Module

+0

Verspare nicht die Rückgabe von 'malloc', es ist unnötig, siehe: [** Betrete ich die Re sult of malloc? **] (http://stackoverflow.com/q/605845/995714) für eine gründliche Erklärung. –

Verwandte Themen