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 :

probleme d'affichage avec les string d'1 liste chainee


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Par défaut probleme d'affichage avec les string d'1 liste chainee
    Bonsoir, jai un probleme avec des liste chainee:
    j'arrive a ajouter des maillons, il les affiche bien, sauf que pour les chaine de caracteres il me sort de caractere crypté genre:

    prenom:╠╠╠╠╠╠╠╠ nom:╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ note:1.000000

    par contre quand je met direct la chaine de caracteres entre guillemets a l'ajout d'un maillon, la il le met bien:

    nouvelElement->nom = "nicaloas";

    ps: pas de probleme pour les entir ou float..

    voici mes 2 fonctions en question:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    typedef struct element element;
    struct element
    {
    	char *nom;
    	char *prenom;
    	float note;
    	struct element *suivant;
    };
     
    typedef element* llist;
    //------------------------
    llist ajouterQueue(llist liste){
     
    	char nom[10]=0;
    	char prenom[10];
    	float note=0;
     
    	element* nouvelElement;
    	nouvelElement = (struct element *) malloc(sizeof(struct element));
     
    	printf("nom:\n");
    	scanf("%s",nom);
     
    	printf("prenom:\n");
    	scanf("%s",prenom);
     
    	printf("note:\n");
    	scanf("%f",&note);
     
        nouvelElement->nom = nom;
        nouvelElement->prenom = prenom;
        nouvelElement->note = note; 
        nouvelElement->suivant = NULL;
     
     
        if(liste == NULL)
        {
            return nouvelElement;
        }
        else
        {
            element* temp=liste;
            while(temp->suivant != NULL)
            {
                temp = temp->suivant;
            }
            temp->suivant = nouvelElement;
            return liste;
        }
     
    }
     
    //----------------
    void afficherListe(llist liste)
    {
        element* tmp = liste;
        while(tmp != NULL)
        {
            printf("prenom:%s nom:%s note:%f \n", tmp->nom,tmp->prenom,tmp->note);
            tmp = tmp->suivant;
        }
    }

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Truc tout bete :

    Le scanf attend une adresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    	printf("nom:\n");
    	scanf("%s",&nom);
     
    	printf("prenom:\n");
    	scanf("%s",&prenom);

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Heu ... Non !!

    Dans ce cas, le tableau de caractères (char nom[10] ou char prenom[10]) est déjà une adresse donc inutile de préfixer avec le symbole &

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	printf("nom:\n");
    	scanf("%s", nom);
     
    	printf("prenom:\n");
    	scanf("%s", prenom);
    C'est correct
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ton problème se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        nouvelElement->nom = nom;
        nouvelElement->prenom = prenom;
        nouvelElement->note = note; 
        nouvelElement->suivant = NULL
    Il faut utiliser strcpy pour recopier les chaines de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        strcpy(nouvelElement->nom, nom);
        strcpy(nouvelElement->prenom, prenom);
        nouvelElement->note = note; 
        nouvelElement->suivant = NULL
    Au passage, 10 caractères pour un nom ou un prénom, cela me parait un peu juste.

    Si tu tapes un nom de 15 caractères, ton programme part en sucette car il n'y a aucun controle sur la longueur saisie par l'utilisateur.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    ...

    Je suis désolé

    J'ai vu "string" dans le titre et je n'ai pas fait attenetion que c'etait du C

    Merci ram-0000

    et encore désolé Ghyslain.


    En penitence ....

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Note qu'il faut modifier également la structure, pour qu'elle ait des tableaux de caractères et non des char*.

    Ou bien, allouer dynamiquement une copie de la chaîne.
    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.

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

Discussions similaires

  1. [Dates] Probleme d'affichage avec les checkbox
    Par Maria1505 dans le forum Langage
    Réponses: 8
    Dernier message: 07/12/2006, 15h45
  2. Tout petit probleme avec les string
    Par bixi dans le forum Delphi
    Réponses: 4
    Dernier message: 06/06/2006, 09h46
  3. probleme avec les string sur ITA2 64 bits!
    Par vince3320 dans le forum SL & STL
    Réponses: 5
    Dernier message: 22/08/2005, 19h59
  4. Lecture de fichier : Probleme avec les string
    Par soda_o_rat dans le forum SL & STL
    Réponses: 10
    Dernier message: 11/08/2005, 22h59
  5. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39

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