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 :

Gestion d'un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Par défaut Gestion d'un tableau
    Bonjour,

    J'essaie à l'aide des commandes fgetc() et ftell() de récupérer les valeurs(ou adresses?) de chaque passage à la ligne d'un fichier texte. Ce fichier texte est un dictionnaire de 20mots (un mot par ligne).

    Voici une partie de mon code

    Code C : 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
     
    FILE *fichier=NULL;
         fichier=fopen("dico.txt","r"); // ouverture en lecture du fichier texte
         int curseur=0;                   
         curseur=fgetc(fichier);       // initialisation du curseur virtuel à 0
         long  tableau[1000]={0};   // création d'un tableau trop gros pour stocker les valeurs du curseur
         int i=0;
        do   
        {
            for (i=0; i<180; i++)
                {
                    if(curseur=='\n')    
                        {
                        tableau[i]=ftell(fichier);  // lorsque le curseur arrive sur une déclaration de changement de ligne, la fonction ftell() remplit le tableau
                        }
                    curseur=fgetc(fichier);
                }
     
        } while(curseur != EOF); // la condition s'éxécute jusqu'à la fin du fichier
    Comment faire pour extraire dans un tableau (ou un nouveau tableau) uniquement les valeurs de chaque '\n' ?

  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
    Comment faire pour extraire dans un tableau (ou un nouveau tableau) uniquement les valeurs de chaque '\n' ?
    Cette question n'est pas claire. Peut être s'agit-il de trouver la position des '\n' au lieu de la position après le '\n' ?

    Pour ton information, il faut considérer deux choses :

    - la fin de ligne peut être codée dans le fichier par 1 ou 2 caractères selon son origine et avec que OS il a été construit, bien que cela ne se traduise dans le programme C que par un unique '\n'

    - Pour un fichier texte, la valeur retournée par ftell() code une position dans le fichier d'une façon non précisée et utilisable uniquement pour se repositionner dans le fichier avec fseek(....,...., SEEK_SET). En particulier, la différence entre deux de ces valeurs ne représente pas nécessairement le nombre de bytes du fichier entre les deux positions.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Par défaut
    Effectivement ma question manquait de clarté, merci pour ta réponse.

    J'essaie de créer un programme qui est sensé prendre un mot au hasard dans un fichier texte, le problème c'est qu'il n'existe pas à ma connaisse de commande pour changer de ligne, donc voila comment je compte m'y prendre :


    - ouvrir un fichier texte contenant une liste de mot ( un mot par ligne )
    - utiliser la commande fgetc() pour lire le fichier
    - récupérer chaque saut de ligne (\n) et placer les adresses données par ftell() dans un tableau
    - faire un random du tableau pour spécifier une ligne au hasard

    J'imagine que je m'y prends peut-être mal mais je ne veux pas copier/coller une fonction bêtement donc je préfère y arriver par moi même (je suis en auto formation)
    Le problème ici c'est que j'initialise un tableau qui est d'une part trop gros, et d'une autre part remplit de "0" et je ne parviens pour le moment pas à isoler les valeurs autres que "0" dans un nouveau tableau.
    Une petite aide ?

  4. #4
    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 ne dois pas bien comprendre ce que tu veux faire car je ne comprend pas cette boucle for avec cette limite de 180, ni cette histoire de nouveau tableau.

    Je verrais quelque chose comme :
    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
         int curseur;
         int i;
         long  tableau[1000]={0};
         FILE *fichier=fopen("dico.txt","r"); // ouverture en lecture du fichier texte
         if(fichier != NULL)
         {
            i = 0; 
            do   
            {
               curseur=fgetc(fichier);       
               if(curseur=='\n')    
               {
                  tableau[i]=ftell(fichier);  // lorsque le curseur arrive sur une déclaration de changement de ligne, la fonction ftell() remplit le tableau
                  i++;
               }
           } while(curseur != EOF); // la condition s'éxécute jusqu'à la fin du fichier
          // i contient le nombre d'entrées du tableau 
    //......
         }

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    J'essaie à l'aide des commandes fgetc() et ftell() de récupérer les valeurs(ou adresses?) de chaque passage à la ligne d'un fichier texte. Ce fichier texte est un dictionnaire de 20mots (un mot par ligne).
    L'utilisation de fgetc, ftell est obligatoire ou seul l'objectif principal (tirage au hasard d'un mot dans un fichier) est visé?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    L'utilisation de fgetc, ftell est obligatoire ou seul l'objectif principal (tirage au hasard d'un mot dans un fichier) est visé?
    J'essaie justement de m'en sortir avec les moyens du bord, je sais déjà qu'il doit y avoir des solutions tellement plus simple

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Tu ne réponds pas à la question

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion d'un tableau à deux dimensions
    Par LadyArwen dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/10/2007, 11h30
  2. [POO] Gestion d'un tableau en attribut
    Par Shandler dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2007, 21h48
  3. gestion d'un tableau d'Object
    Par niro75 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 30/10/2006, 17h33
  4. Réponses: 3
    Dernier message: 14/03/2006, 05h19
  5. Gestion d'un tableau dynamique
    Par almisuifre dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/02/2005, 19h07

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