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 de Char dans une structure


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Problème de Char dans une structure
    Bonjour,

    j'expose mon problème:

    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>
    #include <stdlib.h>
     
    struct monProfil
    {
        char nom[30];
        int age;
    };
     
    int main()
    {
     struct monProfil anthony;
     
     anthony.nom = "anthony";
     anthony.age = 25;
     
     printf("Prenom: %s\nAge: %d\n",anthony.nom,anthony.age);
     return 0;
    }
    le message d'erreur de mon compilateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ||=== test, Debug ===|
    F:\Mes Projets\test\main.c||In function `main':|
    F:\Mes Projets\test\main.c|14|error: incompatible types in assignment|
    ||=== Génération finie: 1 erreurs, 0 avertissements ===|
    Voila, il y a une erreur avec anthony.nom = "anthony"; , je pense que je n'ai pas du comprendre quelque chose, si je pouvais avoir un peu d'aide, !? je vous remercie d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    désolé, j'ai fait un sujet en double

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 339
    Points
    2 339
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    anthony.nom = "anthony";
    l'affectation tel que tu le fait n'est possible que lors de la declaration.
    Pour pallier a cela, utilise strcpy.



    Bonne continuation.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    merci SofEvans pour ton aide, si rapide en plus !!

    Ce bout de code est-il bon et propre ?

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    struct monProfil
    {
        char nom[30];
        int age;
    };
     
    int main()
    {
     struct monProfil anthony = {0,0};
     
     char nom[] = "anthony";
     strcpy(anthony.nom, nom);
     
     anthony.age = 25;
     
     printf("Prenom: %s\nAge: %d\n",anthony.nom,anthony.age);
     return 0;
    }
    en tout cas, ça compile, et le résultat est bon

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[] = "anthony";
    strcpy(anthony.nom, nom);
    ou même directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy( anthony.nom , "anthony" );

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci jeroman ,

    une dernière petite question, j'aimerais savoir pourquoi on doit mettre un strcpy(), dans ce cas la et pas dans d'autre, enfin je veux dire, pourquoi il faut en mettre si le char est dans un structure alors que si je l'aurais mis avant le printf() j'en aurais pas eu besoin ? il y a t-il une raison particulière ?

  7. #7
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Il n'y a aucune particularité du fait que le tableau de char soit dans une structure ou pas.
    Tu confonds différentes choses :
    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
    char nom1[64];
    //Défini un tableau de char non initialisé (ou initialisé par des 0 si le 
    // tableau est créé en allocation statique). Le nombre d'éléments est 64. 
    char nom2[] = "anthony";
    //Défini un tableau de char initialisé avec le contenu de la chaine "anthony".
    //Le nombre d'éléments du tableau est égal au nombre d'éléments de la
    //chaine (y compris le '\0' terminal)
    char * nom3 = "anthony";
    //Défini un pointeur sur char contenant l'adresse de début de la chaine 
    //(non modifiable) "anthony"
    nom1 = "anthony"; 
    //illégal : on ne peut jamais écrire tableau = ....
    strcpy(nom1 , "anthony" );
    //Copie le contenu de la chaine "anthony" dans le tableau commençant à l'adresse nom1.
    strcpy(nom1 , nom2 );
    //Copie le contenu de la chaine d'adresse nom2 dans le tableau commençant à l'adresse nom1.
    strcpy(nom3 , .....);
    //illégal : Le tableau à l'adresse nom3 n'est pas modifiable
     
    printf("%s", "anthony")
    //En argument de printf, figure l'adresse de la chaine "anthony". 
    //Affiche la chaine.
    printf("%s", nom1);
    //En argument du printf, figure l'adresse du début du tableau nom1. 
    //Affiche la chaine commençant à cette adresse
    printf("%s", nom3);
    //En argument du printf, figure la valeur du pointeur nom3, 
    //c'est à dire l'adresse du début de la chaine "anthony". 
    //Affiche la chaine commençant à cette adresse.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci diogene, je vais bien étudier tout ça

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

Discussions similaires

  1. problème d'écriture dans une structure
    Par sdecorme dans le forum MATLAB
    Réponses: 11
    Dernier message: 10/10/2013, 14h27
  2. Réponses: 7
    Dernier message: 04/12/2012, 19h02
  3. Réponses: 4
    Dernier message: 22/09/2010, 09h30
  4. Problème de sauvegarde dans une structure
    Par Invité dans le forum Windows Forms
    Réponses: 8
    Dernier message: 18/05/2008, 11h24
  5. Problème de tableau dans une structure
    Par zarbiman dans le forum Réseau
    Réponses: 5
    Dernier message: 15/12/2007, 18h21

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