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 :

Recupération des données


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut Recupération des données
    Bonjour ,
    Supposons qu'on a un fichier texte : lexique.txt qui contient des données sous la forme :
    1 !

    2 ?

    3 ...

    4 julien

    5 julo

    6 juleno


    ... etc (c'est a dire sous la forme : code_mot suivi d'un espace suivi du mot.
    On veut créer un programme en C qui parcours tt les lignes du fichier lexique.txt et recupere le code_mot et il recupere aussi "calu" = le mot mais en affichant les caracteres du mot (en prenant en compte le codage et le nombre d'octet pour les caraécteres ) !

    Donc en Sortie il faut avoir :
    code_mot : 1
    calu : !

    code_mot : 2
    calu : ?

    code_mot : 3
    calu : .
    code_mot : 3
    calu : .
    code_mot : 3
    calu : .

    code_mot : 4
    calu : j
    code_mot : 4
    calu : u
    code_mot : 4
    calu : l
    code_mot : 4
    calu : i
    code_mot : 4
    calu : e
    code_mot : 4
    calu : n

    j'ai esssayer mais mon code me renvoie toute la ligne et du coup ne respecte pas la sortie demandée :
    mon programme m'affiche :
    code_mot : 1
    calu : !
    code_mot : 2
    calu : ?
    code_mot : 3
    calu : ...
    code_mot : 4
    calu : julien
    code_mot : 5
    calu : julo
    code_mot : 6
    calu : julieno

    Mon code :
    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
    #include <stdio.h>
     
    int main(){
    char *ch[];
    int s;
       int nb;
        FILE *fichier = NULL;
     
        fichier = fopen("lexique.fr", "r");
     
        if (fichier != NULL)
        {     
     
        while( (s= fscanf(fichier,"%d %s",&nb,ch)) != -1){
        printf("%s\n",ch);
        }
       }
     
    }
    Remarque : le prof a dit qu'il faut lire toute la ligne , recuperer le code_mot et apres recuperer les caracteres du mot avec un buffer et il faut prendre en compte l'encodage des caractères (unicode)

    S'il vous plait , aidez moi , j'ai un projet .

    Remarque : on recupere les données pour construire un arbre préfixé qui contient les caracteres trié par alphabet et a comme feuille les code mot .
    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Première chose à savoir: Tes lignes, ont-elles une longueur maximale garantie, ou auras-tu besoin d'une fonction de lecture de lignes sans taille maximale?

    Si tu as une longueur maximale garantie, ça ôte déjà une belle épine du pied (et tant que le fichier n'est pas encodé en UTF-16 ou UTF-32, tu peux le lire directement avec fgets() -- ou si ton prof veut de l'Unicode, fgetws()).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 841
    Billets dans le blog
    1
    Par défaut
    Bonjour
    char *ch[] => pourquoi pas (après-tout, on peut admettre que tu aies besoin d'un tableau de pointeurs). Mais dans ce cas, tu ne peux pas écrire ensuite fscanf(fichier,"%d %s",&nb,ch) car "ch" ce n'est pas une chaine...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut probleme
    Merci beaucoup pour vos réponses
    mais en fait , il faut recupere les codes et les suites des caracteres séparement .
    Est ce qu'il n y a de possibilités de recuperer le code mot et la suite des caracteres separement
    (genre on fait une fonction qui recupere le caractere courant , et dans le main on recupere le code mot et on appelle la fonction pour recuperer la suite des caracteres .) ?

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 841
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par juloji Voir le message
    mais en fait , il faut recupere les codes et les suites des caracteres séparement .
    Rien ne t'empêche récupérer toute la ligne (fgets())... puis ensuite d'extraire les diverses infos de la ligne (strtok_r())...

    Citation Envoyé par juloji Voir le message
    Est ce qu'il n y a de possibilités de recuperer le code mot et la suite des caracteres separement
    Ben me semble que c'est ce que fait déjà fscanf(fichier,"%d %s",&nb,ch).

    Faudrait que tu sois plus clair quoi...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut probleme
    merci pour votre réponse ,
    Nom : aazza.png
Affichages : 297
Taille : 192,7 Ko
    mais il faut recuperer les mots caractere par caractere en fait .

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 841
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par juloji Voir le message
    mais il faut recuperer les mots caractere par caractere en fait .
    Pourquoi ? Si tu as une string contenant "pomme_de_terre", tu n'es pas capable de récupérer 'p', 'o', 'm', 'm', 'e' et etc ???

    Le truc a été justement fait pour te faciliter la vie. Parce qu'au lieu d'avoir une ligne contenant "45 pomme de terre" (ce qui te ferait bien suer à cause des espaces en nombre non prévisible), la ligne contient "45 pomme_de_terre". Ainsi il n'y a qu'un espace qui sert de séparateur.
    Donc soit tu utilises fgets() pour récupérér la ligne, puis strtok_r() pour la splitter sur l'espace afin de récupérer "45" d'un côté (qu'il faudra ensuite convertir en int via atoi()) et "pomme_de_terre" de l'autre ; ou bien tu peux comme tu l'as tenté utiliser fscanf() pour stocker le nombre 45 et la chaine "pomme_de_terre" dans deux variables distinctes (pourvu que tu ne chies pas dans le paté en foirant la définition desdites variables).
    Ensuite dans tous les cas il faudra analyser la chaine "pomme_de_terre" caractère par caractère (en traitant le '_' à part) mais ça c'est une autre histoire que je te conseille de traiter dans une autre fonction.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. SQL ->-> Recupérer des données d'un champ en C++
    Par bogizo dans le forum C++Builder
    Réponses: 8
    Dernier message: 16/05/2007, 13h48
  2. Réponses: 8
    Dernier message: 05/02/2007, 13h28
  3. Réponses: 12
    Dernier message: 04/01/2007, 17h31
  4. Réponses: 2
    Dernier message: 28/05/2006, 23h31
  5. Réponses: 2
    Dernier message: 20/01/2005, 15h19

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