IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Remplir un tableau via un fichier texte en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de SweetLeaf
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 151
    Par défaut Remplir un tableau via un fichier texte en c
    Bonjour !
    Je voudrais récupérer les données d'un fichier texte dans un tableau.
    J'ai deja essayer fgets mais cela ne fonctionne pas.

    Ensuite j'aurais voulu éclater une chaine de caractère pour traiter caractère par caractère. j'ai deja tester substr et strcpy mais je ne sais pas m'en servir.

    Si quelqu'un aurait une solution a mon probleme je suis preneur !
    Merci et bonne journée !!

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Je voudrais récupérer les données d'un fichier texte dans un tableau.
    J'ai deja essayer fgets mais cela ne fonctionne pas.
    Si tu ne montres pas le code qui te pose problème, on ne pourra pas t'aider.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Par défaut
    Tu dois mal utiliser fgets. Cette fonction est normalement assez utile pour mettre du texte à partir d'un fichier dans un tableau. Un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    FILE * monFichier;
    char tableau[10];
     
    monFichier = fopen("nomDuFichier", "r");
    fgets(tableau, 10, monFichier); 
    /*Arguments: 1)Pointeur sur le tableau à remplir 
    2)Nb de charactères maximal à entrer(incluant le caractère de fin de string)
    3)Pointeur sur le fichier*/
    fclose(monFichier);
    On met donc les 9 premiers caractères du fichier nomDuFichier dans tableau[10] et le caractère de fin de string.

    Il faut savoir que fgets arrête de lire s'il rencontre une nouvelle ligne ou la fin de ton fichier. C'est en général la façon la plus simple de récupérer du texte dans un fichier. Fait une recherche sur la fonction fgets si jamais tu veux apprendre à bien la manier. Si tu veux lire de façon plus spécifique, il faut que tu détailles plus ce que tu cherches à faire pour qu'on t'aide.

  4. #4
    Membre confirmé Avatar de SweetLeaf
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 151
    Par défaut
    Voici la fonction qui me pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void chargeDico(char* nom, char TabD[], int longD)
    {
        FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = "";
        int i=0;;
     
        fichier = fopen(nom, "r");
     
        if (fichier != NULL)
        {
            printf("%d\n",longD);
            while (fgets(chaine, TAILLE_MAX, fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
            {
                TabD[i]=chaine;
                i++;
                printf("%s\n",TabD[i]);
            }
     
            fclose(fichier);
        } 
    }
    Elle est sensée lire une ligne de mon fichier passé en paramètre et me la collé dans mon tableau. Malheureusement, dans mon tableau je ne récupère que des lignes qui ne veulent rie dire genre, "&#°^[".

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par SweetLeaf Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void chargeDico(char* nom, char TabD[], int longD)
    {
        FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = "";
        int i=0;;
     
        fichier = fopen(nom, "r");
     
        if (fichier != NULL)
        {
            printf("%d\n",longD);
            while (fgets(chaine, TAILLE_MAX, fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
            {
                TabD[i]=chaine;
                i++;
                printf("%s\n",TabD[i]);
            }
     
            fclose(fichier);
        } 
    }
    Pourquoi TabD est-il un tableau de caractères au lieu d'être un tableau de tableaux de caractères? De plus, la ligne

    ne fait pas ce que tu penses. Pour copier une chaîne, utilise strcpy(). Pour cela, il faut que TabD soit un tableau de chaines de caractères.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre confirmé Avatar de SweetLeaf
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 151
    Par défaut
    Merci pour vos reponse mais j'ai toujours rien compris...
    Pour faire simple, comment je peux faire pour récupérer dans une variable le résultat d'un fgets ? ( la variable doit pouvoir changer a chaque ittération, genre TabD[1] puis TabD[2], etc.)

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 00h52
  2. Korn shell: remplir un tableau à partir de fichier texte
    Par julie26000 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 18/01/2014, 13h24
  3. [8i] MAJ d'une table via un fichier texte
    Par ApprentiOracle dans le forum SQL
    Réponses: 3
    Dernier message: 01/08/2006, 16h08
  4. [VBA-E] Tableau de données <=> Fichier Texte
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2005, 16h02
  5. Réponses: 9
    Dernier message: 16/12/2005, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo