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 :

problème affectation valeur avec un pointeur sur type structure


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 27
    Points
    27
    Par défaut problème affectation valeur avec un pointeur sur type structure
    salut !!

    j'ai declaré le type patient comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct {
                    char prenom[100];
                    char nom[100];
                    int telephone;
                    int age;
                    char adresse[100];
                    int rendezvous;
                    char date[100];
                    char heure[100];
     
                    } patient;
    lors de la saisie des informations relatif à un patient on teste si le patient possède un rendezvous ---¦ saisie de la date & heure sinon date et heure reçoivent : sans rdv.

    alors le problème :

    comment je doit accéder au type patient avec un pointeur qui pointe dedans ???

    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
     
    
      if (p->rendezvous==1)
        {
         printf(" donner la date de rendez-vous \n ");
        fflush(stdin);
        scanf("%s",p->date);
        printf(" donner l'heure souhaite \n ");
        fflush(stdin);
        scanf("%s",p->heure);
        }
        else
        {
         (*p).date=" pas de rendezvous " ;
         (*p).heure=" pas de rendezvous ";
        }
    le problème resident dans le "else"

    (*p).heure="pas de rdv" ; -----¦ retourne une erreur :

    incompatible type when assigning to type char[100] from type char *

    c'est quoi la faute ?? comment remédier ???

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 680
    Points
    13 680
    Billets dans le blog
    1
    Par défaut
    Salut

    On ne copie pas une chaine de caractères avec l'opérateur = !
    On utilise les fonctions dédiées : http://c.developpez.com/faq/?page=strings#STRINGS_init

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    ahhh bon !!! ça marche aussi avec les pointeurs !

    j'ai cru que les fonctions relatif au chaines de caractères sont justes conçu pour ce type mais pas pour des pointeurs pointant sur un type char !!!

    ça marche oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcpy((p->date),"pas de rendezvous") ;
     strcpy((p->heure),"pas de rendezvous") ;

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 680
    Points
    13 680
    Billets dans le blog
    1
    Par défaut
    Une chaine de caractères ou un pointeur sur caractère, la frontière est mince en C

    Regarde la FAQ sur les chaines, c'est bien expliqué. Ce qu'il faut retenir, c'est qu'une chaine de caractères est un ensemble de caractères placés à la suite en mémoire et terminé par un caractère spécial, '\0' dont la valeur numérique est 0.

    Cette chaine doit être dans un espace mémoire réservé : soit en créant un tableau avec une écriture comme char tab[100] soit en allouant une zone mémoire de manière dynamique avec une écriture comme char zone = malloc(100);. Il y a aussi le cas des litteral strings placés en mémoire non modifiable mais c'est un cas un peu à part.

    Tu y mets ensuite des caractères et tu indiques la fin de la chaine par '\0', ce qui signifie que tu peux mettre 99 caractères utiles. C'est bien ce pattern "caractère + marqueur de fin" qui constitue une chaine et non la manière dont tu réserves la mémoire.

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

Discussions similaires

  1. problème char-actéristique avec des pointeurs
    Par Antigonos Ier Gonatas dans le forum C
    Réponses: 11
    Dernier message: 16/04/2007, 21h22
  2. Réponses: 2
    Dernier message: 21/03/2007, 10h55
  3. Réponses: 17
    Dernier message: 22/01/2007, 13h34
  4. Réponses: 3
    Dernier message: 14/01/2007, 19h52
  5. Réponses: 8
    Dernier message: 16/08/2006, 14h39

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