Structure et pointeur... SOS!
Résolu
foreversy
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
foreversy Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
foreversy Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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!
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!
A voir également:
- Structure et pointeur... SOS!
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Structure d'un rapport de stage - Guide
- Trouvez l'erreur dans la structure du document et corrigez-la. - Forum Word
2 réponses
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,
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,
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 !
Finalement avec la fonction strcpy,J'ai reussi l'étape de la compilation.Merci encore fiddy !