Lesen Zeilen aus c-Datei und setzen Sie die strings in ein array

Ich versuche, fügen Sie jede Zeile der c-Datei in ein array. Die Inhalte files.txt ist

first.c
second.c
third.c
fourth.c

Ich will, dass mein code drucken Sie diese Zeilen, fügen Sie die Zeile auf mein array, und dann drucken Sie jeden Eintrag in mein array. Jetzt tut es der erste Teil korrekt, aber es ist nur mehr vierte.c in das array. Kann mir jemand sagen, was falsch ist mit meinem code?

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int i=0;
    int numProgs=0;
    char* programs[50];
    char line[50];

    FILE *file;
    file = fopen("files.txt", "r");

    while(fgets(line, sizeof line, file)!=NULL) {
        //check to be sure reading correctly
        printf("%s", line);
        //add each filename into array of programs
        programs[i]=line; 
        i++;
        //count number of programs in file
        numProgs++;
    }

    //check to be sure going into array correctly 
    for (int j=0 ; j<numProgs+1; j++) {
        printf("\n%s", programs[j]);
    }

    fclose(file);
    return 0;
}
  • did u bedeuten sizeof(line) ?
  • sizeof line korrekt ist auch.
  • Diese Zeile: Programme[i]=Zeile; wird nicht funktionieren, aus zwei Gründen. 1) das array von 50 Zeiger auf char haben muss, um die benötigte Zuordnung der Speicher (und der Einstellung der Zeiger auf diesen Speicher) für jede dieser 50-Pointer. Empfehlen die Verwendung von calloc (), so dass die memory-Segmente werden pre-set für alle '\0'. 2) alle auf diese Zeile macht, ist die Einstellung der Programme[i] Zeiger auf die array-Zeile[]. Was wirklich notwendig ist, ist so etwas wie: strcpy ("Programme" [i], Zeile );
InformationsquelleAutor user3192682 | 2014-10-22
Schreibe einen Kommentar