La lecture des lignes de c fichier et mettre les chaînes dans un tableau

Je suis en train d'ajouter à chaque ligne d'un fichier c dans un tableau. Le contenu de files.txt est

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

Je veux mon code pour imprimer chacune de ces lignes, ajoutez la ligne de mon tableau, et ensuite, imprimez chaque entrée dans mon tableau. Pour l'instant il est en train de faire la première partie correctement, mais c'est seulement l'ajout de la quatrième.c de la matrice. Quelqu'un peut me dire quel est le problème avec mon 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;
}
  • u ne signifie sizeof(line) ?
  • sizeof line est correct aussi.
  • Cette ligne: programmes[i]=ligne; ne fonctionnera pas pour deux raisons. 1) le tableau de 50 pointeurs de char doit avoir le besoin de l'allocation de la mémoire (et de l'aiguille, pour que la mémoire) pour chacun de ces 50 pointeurs. Vous suggérons d'utiliser calloc() de sorte que les segments de mémoire sera pré définie pour tout '\0'. 2) cette ligne est en train de faire est de fixer les programmes[i] pointeur sur la ligne array[]. Ce qui est vraiment nécessaire, c'est quelque chose comme: strcpy( programmes[i], ligne );
InformationsquelleAutor user3192682 | 2014-10-22