Récupération d'un fichier dans un tableau [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 mai 2008
-
thomwebster
Messages postés
63
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 juin 2007
-
<hr style="COLOR: #d1d1e1" size="1" />
<!-- / icon and title -->
<!-- message -->

Bonjour j'ai essayé le code suivant

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define TAILLE_MAX 1000
 
int main(int argc, char *argv[])
{
    FILE* fichier = NULL;
    char chaine[TAILLE_MAX] = "";
 
    fichier = fopen("test.txt", "r");
 
    if(fichier != NULL)
    {
        while(fgets(chaine, TAILLE_MAX, fichier) != NULL)// On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
        {
            printf("%s", chaine); // On affiche la chaîne qu'on vient de lire
        }
while(chaine[0]=="4800")
{printf("bravo\n");
}
        fclose(fichier);
    }
Sleep(500000);
    return0;
}


mais je n'arrive pas a récupérer les valeurs de mon fichier dans un tableau merci de m'aiguillé pour me dire comment faire.
(j'ai un probléme de test sur mon while)
Merci d'avance

9 réponses

Messages postés
63
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 juin 2007

non dans son cas, NULL vaut bien 0, c'était juste pour info que je te disais ça
fgets() renvoient le pointeur s si elle
réussit, et NULL en cas d'erreur, ou si la fin de
fichier est atteinte avant d'avoir pu lire au moins un
caractère.
tout est dans le man ;)
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
Yop,

Ton  code me parait très bizzar, déjà pour la lecture du fichier != NULL, ce n'est pas la valeur NULL que tu doit tester mais 0 . En C NULL ne veut pas dire 0. Pour moi c'est la qu'est l'erreur, maintenant je ne sais a quoi sert ton prog, mais while(chaine[0]=="4800") pourquoi testes-tu si le premier caractère de ta chaine est = a 4800 ? Enfin voila. Esseye aussi un espace entre ton return et ton 0 ;) sinon erreur de compilation.

Bonne journée.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
Aussi, petite précision , ici ta chaine de caractère a la fin de l'éxécution de ton programme ne contiendra plus que la dernière ligne du fichier lue. Pour stocker tout ton fichier dans un tableau, utilise un tableau 2 dimensions.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Si la macro NULL est définie, ya qd meme de fortes chances qu'elle soit égale à 0 :)
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 mai 2008

En fait ce quu il me faut c'est un code qui me permette le contenu d'un fichier et d'associer ce contenu a une variable
par exemple j'ai un fichier avec ecris 4800 a l'interieur et je veux lire ce fichier et associer a une variable A (tableau ou pas ) la valuer  4800.

Merci de votre aide quand meme(c'est pour un programme d'analyse de trame Jbus pour votre curiosité et j'essaye de résoudre mon probléme sur un prog simple pour l integrer ulterieuremtn sur mon prog)
Messages postés
63
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 juin 2007

Pour info luhtor,
Dans stdlib.h :
#define NULL 0

Cependant dans certaines autres librairies, on peut trouver :
#undef NULL
#define NULL ((void *)0)

(stddef.h sous linux par exemple)
Messages postés
63
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 juin 2007

pour affecter à une variable quelque chose qui se trouve dans un fichier utilise fscanf.
Par exemple pour récupérer 5 entier dans un fichier mon_fichier.conf:

int res;
int tableau[5];
FILE * descripteur;
descripteur=fopen("mon_fichier.conf","r");/* ouvre le fichier mon_fichier.conf en lecture*/
    if(!descripteur){
        /*erreur*/
        exit(-1);
    }

    for(int i=0;i<5;++i){
        res=fscanf(descripteur,"%d",&tableau[i]);
            if(!res){

                /*erreur*/

                exit(-1);
            }

    }
flose(descripteur);
Messages postés
63
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 juin 2007

Je viens de lire ton code...

    char chaine[TAILLE_MAX] = ""; //tu défini un tableau de caractères
/*
tu test si le caractère du rang 0 dans le tableau de caractères chaine vaut "4800"... "4800" est une chaine de caractères donc cela ce sera jamais égal...
*/
while(chaine[0]=="4800")

Si tu as des questions n'hésite pas à en poser
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ah au temps pour moi, je croyais que tu parlais du pointeur. Mais je connais pas la fonction fgets, mais si elle retourne en entier. Oui c'est anormal de mettre NULL.