Récupérer des lignes d'un fichier txt

Signaler
Messages postés
4
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
31 mai 2007
-
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
-
Bonjour à tous, voila donc ma question.

Cela fait un bon moment que je cherche à:

    -lire un fichier txt préformater (je sais que tel ligne  = tel information);
    -récupérer chaque ligne lu, pour les mettrent chacune dans une variable différente

pour ensuite pouvoir utiliser chaque information de chaque lignes comme je veux. (En C bien evidement).

Je sais comment ouvrir le fichier txt, lire les lignes et tt et tt, mais pas comment faire pour que chaque ligne entre dans une variable.

Si quelqu'un pouvait me sortir de cette galere, cela m'arrangerai beaucoup!!!

Merci d'avance pour les réponses!

9 réponses

Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
si tu arrives à lire les lignes, où est le problème pour stocker dans une variable ?

Loki
Messages postés
4
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
31 mai 2007

bah j'arrive pas a lire chaque ligne, et metre chaque ligne dans une variable diférente... J'arrive pas a trouver le code pur le faire... j'ai fait plein de test....piiiii non.

Je suis peut etre pas doué aussi mais bon
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
montre nous ton code

Loki
Messages postés
4
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
31 mai 2007

void test ()
{


    FILE* fichier = NULL;
    char chaine[1000] = ""; // Chaîne vide de taille TAILLE_MAX
    char** tabChaine;
    int nCountLine = 0;
       
    fichier = fopen("titi.txt", "r");


    if (fichier != NULL)
    {
        while (fgets(chaine, 1000, fichier) != NULL)
        {
        realloc(tabChaine, nCountLine * sizeof(char*));
             tabChaine[nCountLine] = chaine;
            printf("%s", tabChaine[nCountLine]); 
           nCountLine = nCountLine+1;
        }
        fclose(fichier);
    }
}
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Un pointeur POINTE vers une valeur, il ne la stock pas ailleurs. Si la valeur sur laquelle il pointait change, il ne conservera pas la valeur précédente, il continuera de pointer sur cette même valeur peut-importe son contenue.

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Pardon, c'est mal formulé. Je reformule:
Un pointeur POINTE vers une adresse, il ne stock pas de valeur. Si la
valeur contenue à l'adresse qu'il pointe change, il ne fera pas une copie de la valeur précédente et pointer sur sa nouvelle position, il continuera de pointer sur cette même adresse peut-importe
son contenue.
J'espère que c'est un peu plus clair.

C++ (@++)<!--
Messages postés
4
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
31 mai 2007

ok merci bcp de ta réponse. (jai du la lire + d'une fois ^^)
donc mon probleme viendrai du pointeur?
je vais éssayer de rectifier tt ça.
Je vous tien au courant
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
bon là tu récupères le contenu de ton fichier entier.
le caractère de saut de ligne est '\n'.
tu peux donc restructurer ta chaine en un tableau de chaine en scannant de bout en bout et en rangeant dans une ligne différente à chaque fois qu'on saute une ligne

sinon généralement j'utilise cette petite fonction :
int readstr(FILE *f,char *string)
{
    do
    {
        char * ok = fgets(string, 255, f);
        if (!ok)    return 0;
    } while (string[0] == '/' || string[0] == '\n');
    return 1;
}
Elle lit une ligne dans un fichier f et la stocke dans une chaine string
de plus elle ne tient pas compte des sauts de lignes répétés ainsi que des lignes commentaires c'est à dire qui commencent par /
enfin, la fonction retourne 1 si tt va bien et 0 si par exemple on arrive en fin de fichier.

Loki
Messages postés
286
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
27 décembre 2009
2
oups j'ai un chapitre de retard

Loki