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 :

débutant-liste chaîne de caractères


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut débutant-liste chaîne de caractères
    Bonjour, j'envoie une bouteille à la mer car apres recherche sur le forum, les tutaux et google je n'ai toujours pas compris comment creer une liste de nom.

    Je souhaiterai savoir comment récuperer un nom que l'utilisateur aura tapé (il y aura plusieurs noms à stocker) et l'inserer dans un tableau dynamique afin de constituer une liste. Faut il utiliser un tableau 2 dimensions ou une stucture avec typedef avec la fonction gets?

    Je ne peux pas inserer tous les noms dans un unique tableaux (ou la j'utiliserai la fonction strcpy) car mon but est de faire une correspondance entre la liste nom et une liste prénom, age....
    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    c'est flou comme question ... (ça fait bien 3h que je l'ai lu, j'ai toujours pas compris)

    en prenant que la derniere partie du post, je comprend presque la question

    tu as donc quelqu'un, qui est qualifié par son nom, prenom et age ?

    le plus simple c'est de faire une structure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct somebody_s { char nom[20]; char prenom[20]; int age; } somebody;
    apres tu declare dans ton code un tableau de somebody.
    et je te laisse chercher pour l'utiliser. (hint: fgets)

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Si tu veux pouvoir encoder un nombre indéfini de personne, en utilisant la structure somebody_s donnée par Dark_Ebola, tu peux créer une liste ou une file (selon l'utilisation que tu prévois d'en avoir) qui serait du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct liste_s
    {
        somebody Data;
        struct liste_s *Suivant;
    }liste
    A chaque fois que tu voudrais rajouter une personne, il faudrait alors allouer dynamiquement un nouvel élément de type liste (avec malloc()), faire pointer le pointeur Suivant du dernier élément de la liste vers le chainon que tu viens d'allouer et remplire les données.

    La seule chose, c'est qu'une telle structure ne permet une recherche qu'en N (il faut, en gros, parcourrir toute la liste pour etre sur de trouver la pesonne que l'on recherche)...

    Mais au moins, la seule limite au niveau des personnes que tu pourra encoder sera la mémoire dont dispose ton application.

    Une solution qui pourrait accélérer la recherche serait de se baser sur un arbre binaire: chaque élément pointant vers un noeud gauche et un noeud droit sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct Noeud_s
    {
        somebody Data;
        struct Noeud_s *Gauche;
        struct Noeud_s *Droite;
    }Noeud;
    en utilisant un algorithme quelconque pour déterminer une valeur unique pour chaque personne qui puisse etre comparée sous la forme de plus grand ou plus petit...

    Tu n'aurais alors qu'à décider que le pointeur Gauche pointe vers un élément plus petit, et le pointeur Droite vers un élément plus grand (par rapport au noeud sur lequel tu te trouve)...

    Correctement rempli, un tel arbre permet une recherche en log(N)-1 et permet de trouver un élément parmis 255 en 8 itérations seulement... une recherche sur 65.300 et quelques éléments ne s'effectuant qu'en 16

    Les deux plus grosses difficultés d'un tel arbre resposent dans les fait de
    1. Etre sur que chaque donnée aie une valeur de comparaison exclusivement unique
    2. arriver à remplir l'arbre de manière complete (les deux pointeurs devant à chaque fois etre utilisés)


    Pour la deuxieme, une recherche sur google avec les termes "tri arbre binaire algorithme" devrait te permettre de trouver assez facilement l'algorithme à mettre en oeuvre
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    koala01 : deja qu'il s'en sors pas dans les specs de son projet. qu'il nous parle de gets ...
    je pense que lui donner ces informations vont pas l'aider; au contraire.
    attaquer d'emblée sur un arbre binaire equilibré ... attendons qu'il soit a l'aise avec les structs et la manipulation de chaines saisi par un singe.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Dark_Ebola
    koala01 : deja qu'il s'en sors pas dans les specs de son projet. qu'il nous parle de gets ...
    je pense que lui donner ces informations vont pas l'aider; au contraire.
    attaquer d'emblée sur un arbre binaire equilibré ... attendons qu'il soit a l'aise avec les structs et la manipulation de chaines saisi par un singe.
    Oupppssss... Autant pour moi

    C'est vrai que j'aurais du m'arreter apres les explications de base d'une liste simplement chainée
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Dark_Ebola
    <...>attendons qu'il soit a l'aise avec les structs et la manipulation de chaines saisi par un singe.
    +1

  7. #7
    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
    Moi, j'aurais pris de base une liste doublement chaînée, car:
    1. Il faut prendre les bons réflexes tout de suite, une liste doublement chaînée permet un contrôle d'erreur.
    2. Je trouve qu'une liste doublement-chaînée est plus facile à manipuler pour les insertions/suppressions.
    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.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut
    Merci pour vos réponses.... Mon TP concerne la conception d'un dictionnaire bilingue (mots et traduction saisie par l'utilisateur) mais vu que je souhaite comprendre le principe et pas faire du copier coller j'ai pensé qu'une liste nom,prénom serait plus simple à comprendre...

    Je souhaiterai donc insérer plusieurs noms, prénoms, âge dans cette structure...
    donc si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    #include <string.h> 
     
    typedef struct somebody_s { char nom[20]; char prenom[20]; int age; } somebody;
    somebody list[30];
     
    printf("entrez le nom de la personne");
    scanf("%s", &nom);
    printf("entrez le prenom de la personne");
    scanf("%s", &prenom);
    age.....
    avec la structure somebody je ne récupère qu'un seul nom, prénom, pas une liste entiere d'invidus avec leurs caracteristiques, il va de soi qu'il faut créer une boucle (pour tous les inserer), ce que je voudrais savoir c'est comment stocker tous ça?
    Est il possible que j'utilise le code ci dessous pour les stocker? (autre manière de proceder, soyez clément) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    char *prenom[200];
    char *nom[200];
    char temp[20];
    int i=0;
    printf("entrez le nom de la personne");
    scanf("%s", &temp);
    strcpy (nom[i],temp[i]); i++;  // le nom, prénom sont associé par la valeur de i,
    je libère le temp[] à la fin du bricolage, euh du programme je veux dire
    @medinoc: j'ai beaucoup de mal avec les listes chainés simple alors les doubles...mais merci pout les conseils

  9. #9
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Médinoc
    Moi, j'aurais pris de base une liste doublement chaînée, car:
    1. Il faut prendre les bons réflexes tout de suite, une liste doublement chaînée permet un contrôle d'erreur.
    2. Je trouve qu'une liste doublement-chaînée est plus facile à manipuler pour les insertions/suppressions.
    AMHA, la seule différence réelle entre les deux, c'est que la liste doublement chainée peut etre parcourrue dans les deux sens...

    Cela représente, bien sur, un avantage certain, mais encore faut-il que l'on aie une raison de vouloir la parcourrir dans les deux sens...

    Et cet avantage n'apparait significativement que lorsque, à position N de la liste, on veut accéder à une position comprise entre N/2+1 et N-1

    Dans le cas de listes contenant de très nombreux noeuds, ca peut faire une différence notoire, en temps d'exécution, mais, dans le cas de listes assez courtes, l'intéret peut etre relativement limité...

    Dans certains cas (listes circulaires, par exemple), le fait de disposer du pointeur sur l'élément précédent n'apporta rien

    En outre, je n'ai personnellement jamais eu de difficultés à gérer le controle d'erreur ou à gérer les insertions/suppressions sur une chaine simplement chainée...

    Evidemment, ce n'est là que mon avis... mais je le partage
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    le code montré dans le post #8 est bourré d'erreurs en tout genre. c'est meme plus un betisier, c'est un champs de mine.

    revois tes cours de C, notemment la partie sur les tableaux et les structures. tu en as GRANDEMENT besoin.

  11. #11
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Dark_Ebola
    (...)
    ce serait bien si d'un post a l'autre, tu pouvais rester coherent.
    Heuuu... et quelles sont les incohérences???

    Le fait de parler de difficultés que l'on PEUT rencontrer ne veut pas dire que la personne qui en parle les rencontre elle-meme...

    Et je ne me souviens absolument pas avoir marqué ou que ce soit dans ce forum, ni dans aucun autre que je fréquente d'ailleurs, que j'éprouvais des difficultés avec les listes chainées...

    Par contre, ce que j'ai fait, c'est de présenter les limites des différentes possiblités que j'exposais et les problèmes auxquels il POURRAIT etre confronté:

    un liste chainée nécessite de parcourrir toute la liste pour etre sur de trouver le bon maillon (acces en N) et l'arbre binaire n'offrira une recherche en log(N)-1 que s'il est correctement rempli...

    AMHA, il ne s'agit ni plus ni moins que de l'honnete intellectuelle, propre à lui permettre de faire le choix le mieux adapté à sa situation...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  12. #12
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    la derniere partie du message ne tiens plus (d'ailleurs j'ai trop honte, je l'efface :: je dois t'avouer que je t'ai confondu avec magicland ... )

    desolé koala, pas assez dormi moi

  13. #13
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par Dark_Ebola
    la derniere partie du message ne tiens plus (d'ailleurs j'ai trop honte, je l'efface :: je dois t'avouer que je t'ai confondu avec magicland ... )

    desolé koala, pas assez dormi moi
    Tu es tout excusé, l'erreur est humaine

    Disons juste que, pendant quelque minutes, j'ai moi meme été choqué de la remarque, mais je ne t'en tiens pas rigueur
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Par défaut
    je demande qu'a être compris et que l'on m'explique pour que je puisse progresser en C. Comment stocker les donnés noms, prénom que ce soit dans une structure ou dans un tableaux ?

    Je sais qu'il faut utiliser des malhoc car on ne connait pas le nombre d'individu que l'utilisateur tapera, et je sais qu' un tableau peut contenir des carateres un par un Mais moi je souhaite savoir comment obtenir le tableau ci dessous (que j'ai lu dans un manuel) sachant "francois" et "patrick" devront être saisie par l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom[0]="francois" nom[1]="patrick" etc
    J'espere que vous pourrez m'aider je ne suis pas le seul à avoir compris la gestion des chaines de carateres et que la solution pourrait tres bien être publié dans la catégorie code source de ce site

  15. #15
    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
    Pour revenir au problème de notre ami :
    Est il possible que j'utilise le code ci dessous pour les stocker?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char *prenom[200];
    char *nom[200];
    char temp[20];
    int i=0;
    printf("entrez le nom de la personne");
    scanf("%s", &temp);
    strcpy (nom[i],temp[i]); i++;
    Non : nom est un tableau de 200 pointeurs sur char. Un pointeur n'est pas un espace permettant le stockage d'une chaîne de caractères : Il peut stocker l'adresse d'un tableau de caractères mais créer un pointeur sur un tableau de caractères ne crée pas le tableau de caractères. Donc tu n'as pas la place de stocker les noms et prénoms.
    On est mieux parti avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef struct somebody_s { char nom[20]; char prenom[20]; int age; } somebody;
    somebody list[30];
    list permet de stocker les données de 30 individus. Chacun des éléments de list a l'espace de stockage nécessaire au stockage des noms et prénoms (sauf si les individus sont malgaches ou portugais .... )

    On a donc pour trame qq chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char temp[20];
    int i=0;
    /* boucle sur i */
    printf("entrez le nom de la personne");
    scanf("%s", temp); /* à améliorer plus tard à cause des malgaches...*/
    strcpy (list[i].nom,temp);
    /* idem pour le prénom
     i++; 
    /* reboucler */

  16. #16
    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 sais qu'il faut utiliser des malhoc car on ne connait pas le nombre d'individu que l'utilisateur tapera,
    C'est pourqoi le tableau list n'est pas adapté et qu'il faudra envisager de faire une liste (de quelque forme que ce soit, c'est à voir) de somebody plutôt qu'un tableau (de taille fixée au moment de sa création) de somebody
    On pourra se poser le même problème pour la longueur des noms et prénoms.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom[0]="francois" nom[1]="patrick" etc
    Ce cas est différent du tien et nom est ici déclaré comme tableau de pointeur sur char : les chaînes "françois",... sont des chaînes (des tableau de char) constantes qui ne peuvent être modifiées à l'exécution placées quelque part on ne sait où. Elles sont répérées par leur adresse de début et dans le tableau nom, on ne met pas la chaîne mais cette adresse.

  17. #17
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par magicland
    je demande qu'a être compris et que l'on m'explique pour que je puisse progresser en C. Comment stocker les donnés noms, prénom que ce soit dans une structure ou dans un tableaux ?
    On va dire une structure, c'est plus clair.

    On y va pas à pas :

    Rappelons qu'une chaine de caractères est un tableau de char contenant une séquence de caractères terminée par un 0.

    Pour stocker une chaine de caractère, il faut donc un tableau de char d'une taille suffisante. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char nom[32];
    char prenom[32];
    Ensuite, on peut regrouper ces tableaux dans une structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct fiche
    {
       char nom[32];
       char prenom[32];
    };
    ce qui facilite la manipulation. Par exemple, pour écrire une fonction de saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int saisie_fiche (struct fiche *p_fiche)
    {
    }
    on peut ensuite constituer un fichier, qui n'est rien d'autre qu'un tableau de fiches :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct fiche fichier[100];
    Voilà pour le principe de l'organisation des données. Entraine toi avec ça (saisie, lecture, recherche etc.).

    Ensuite on verra comment rendre tout ce bazar plus souple, plus 'dynamique'.

    Mais une chose à la fois.

  18. #18
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Une petite précision concernant la structure:

    Une fois la structure fiche (proposée par Emmanuel Delahaye) créée, si tu défini une variable de ce type, sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct fiche Mafiche;
    tu accédera à ses composants (nom et prénom) sous la forme respective de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Mafiche.nom
    ou
    Mafiche.prenom
    en utilisant exactement les meme méthodes que si tu avais déclaré deux variables distrinctes "tableau de caractères".

    Cela deviendra repsectivement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Mafiche->nom
    ou  
    Mafiche->prenom
    si tu utilise un pointeur
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  19. #19
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char temp[20];
    int i=0;
    /* boucle sur i */
    printf("entrez le nom de la personne");
    scanf("%s", temp); /* à améliorer plus tard à cause des malgaches...*/
    strcpy (list[i].nom,temp);
    /* idem pour le prénom
     i++; 
    /* reboucler */
    Je suis d'origine malgache.... Merci!

    Le malgache conseille l'utilisation de "fgets" et des fonctions "strto*" pour tout ce qui risque d'être conversion d'un string vers le format désiré.

  20. #20
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par homeostasie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char temp[20];
    scanf("%s", temp); /* à améliorer plus tard à cause des malgaches...*/
    Je suis d'origine malgache.... Merci!

    A l'armée (1979-12), j'ai connu un "Rasafinandibyadrianasalo" (24 lettres !) On l'appelait 'Rasa'... C'était le 'pivot' (1.98m). Très sympa.

Discussions similaires

  1. [Débutant] Inverser une chaîne de caractères
    Par zbooon dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 28/04/2017, 13h44
  2. Trier une liste chaînée de caractères
    Par Electro_Man dans le forum C
    Réponses: 6
    Dernier message: 27/04/2014, 18h01
  3. Réponses: 15
    Dernier message: 26/04/2010, 10h21
  4. Listes chaînées de caractères
    Par monrow dans le forum Ada
    Réponses: 2
    Dernier message: 31/12/2009, 13h30
  5. Réponses: 7
    Dernier message: 10/10/2007, 11h29

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