Structure et pointeur... SOS!

Résolu/Fermé
foreversy Messages postés 2 Date d'inscription samedi 2 février 2013 Statut Membre Dernière intervention 2 février 2013 - 2 févr. 2013 à 15:31
foreversy Messages postés 2 Date d'inscription samedi 2 février 2013 Statut Membre Dernière intervention 2 février 2013 - 2 févr. 2013 à 20:08
Bonjour,
j'ai débuté le langage c il n'ya pas longtemps et j'en suis aux structures. Seulement j'ai voulu essayer à la pratique et ça plante!

D'abords j'ai crée un fichier header (monheader.h) avec les structures déclarées comme suit:

typedef enum Profession Profession;
enum Profession
{
etudiant, cadre, artiste, litteraire, scientifique, juriste,chomeur,autre

};


typedef struct Personne Personne;
struct Personne
{
char nom[100];
char prenom[100];
int sexe ; // renvoie 1 si masculin, 0 si feminin
int age;
Profession travail;
};


Et voici mon fichier contenant mon code source structure.c permettant d'initialiser une variable de type personne.


#include <stdio.h>
#include "monheader.h"

main()
{
Personne type;
Personne *mec= &type ;
mec->nom = "Bensedik";
mec->prenom="Karim ali";
mec->age = 25;
mec->sexe = 1;
mec->travail = juriste;


printf ("%s",type.nom);
printf ("%s",type.prenom);
printf ("%i",type.age);
printf ("%i",type.sexe);
printf ("%s",type.travail);
return 0;
}




seulement à la compilation, codeblocks me renvoie deux erreurs identiques aux lignes de code:

mec->nom = "Bensedik";
mec->prenom="Karim ali";

error: imcompaible type when assigning to type 'char[100]' from type char *

je me suis efforcée à comprendre et déceler mon erreur mais j'y vois rien jusqu'à present :(
Aidez moi S'il vous plait....pleeeeeeeeease!






2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 févr. 2013 à 15:45
Je ne sais pas où tu apprends le C, mais :

main()
N'existe pas. Le prototype de main() sans argument est : int main (void)

int sexe ; // renvoie 1 si masculin, 0 si feminin
Une variable ne renvoie rien du tout. Une variable contient. C'est une fonction qui renvoie une valeur.

mec->nom = "Bensedik";
mec->prenom="Karim ali";

Cela se fait avec strcpy.
Par exemple : strcpy(mec->nom, "Bensedik");
Ou encore mieux avec strncpy();

Je te conseille d'ailleurs de faire une fonction.
Cela te permettra de faire simplement : initialisation(mec, "Bensedik", "Karim ali", 25, 1, juriste)

printf ("%i",type.age);
printf ("%i",type.sexe);
printf ("%s",type.travail);

N'oublie pas de mettre un & devant la variable. Cela donnera : &type.age, &type.sexe.
Et travail est de type int, bien que tu ais mis une chaîne de caractère.
Je te conseille d'utiliser un tableau de correspondance entre ton enum et le titre de la profession si tu as besoin.

Cdlt,
0
foreversy Messages postés 2 Date d'inscription samedi 2 février 2013 Statut Membre Dernière intervention 2 février 2013
2 févr. 2013 à 20:08
désolée! dans mon copier coller j'ai oublié le int de ma fonction main et merci de corriger mes erreurs de débutante. J'ai crée une fonction avec pour paramètre un pointeur qui m'a permi d'initialiser ma variable type.
Finalement avec la fonction strcpy,J'ai reussi l'étape de la compilation.Merci encore fiddy !
0