Erreur: incompatible types assignement en C
groomer
Messages postés
88
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
Dans le cadre d'un projet je suis bloqué sur une erreur de d'incompatibilité de type:
svp aidez moi !
L'erreur :
t.nom=nomSaisi; incompatible types assignement
Pourtant j'ai l'impression de mettre un char nomSaisi[51] dans char nom[51]
Dans le cadre d'un projet je suis bloqué sur une erreur de d'incompatibilité de type:
svp aidez moi !
L'erreur :
t.nom=nomSaisi; incompatible types assignement
Pourtant j'ai l'impression de mettre un char nomSaisi[51] dans char nom[51]
typedef struct personne{ //declaration de la structure personne
char nom[51]; //declaration du tableau nom de 50
char tel[11]; //declaration du tableau tel
struct personne *suivant;
struct personne *precedent;
}pers;
//fonction ajouter entree
pers ajoutEntree(){
char nomSaisi[51];
char numeroSaisi[11];
//creation de l'entree t
pers t;
//demande du nom et du tel
printf("saisir le nom:");
scanf("%c",nomSaisi); //recuperation clavier du nom
printf("saisir le numero:");
scanf("%c",numeroSaisi); //reccuperation clavier du numero
t.nom=nomSaisi; //on charge dans l'entree le nom
t.tel=numeroSaisi;
return t;
}
A voir également:
- Erreur: incompatible types assignement en C
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
Bonjour,
Non, tu mets un pointeur dans un tableau
(un char* dans un char [51])
Il faut utiliser la fonction strncpy (pas strcpy elle peut déborder)
strncpy(t.nom, nomSaisi, 51);
cela copie la chaine de caracteres de nomSaisi dans t.nom
Non, tu mets un pointeur dans un tableau
(un char* dans un char [51])
Il faut utiliser la fonction strncpy (pas strcpy elle peut déborder)
strncpy(t.nom, nomSaisi, 51);
cela copie la chaine de caracteres de nomSaisi dans t.nom
+1 pour Droopy_.
Je rajouterai également qu'avec : scanf("%c",nomSaisi)</ital tu rajouterais qu'un caractère. C'est pas ce que tu veux (enfin je pense ^^).
Utilise plutôt : <ital>fgets(nomSaisi,sizeof nomSaisi,stdin ;)
Par ailleurs, c'est dommage de gaspiller deux tableaux pour ça. Tu peux très bien faire fgets(t.nomSaisi, sizeof(t.nomSaisi),stdin); ;)
Cdlt
Je rajouterai également qu'avec : scanf("%c",nomSaisi)</ital tu rajouterais qu'un caractère. C'est pas ce que tu veux (enfin je pense ^^).
Utilise plutôt : <ital>fgets(nomSaisi,sizeof nomSaisi,stdin ;)
Par ailleurs, c'est dommage de gaspiller deux tableaux pour ça. Tu peux très bien faire fgets(t.nomSaisi, sizeof(t.nomSaisi),stdin); ;)
Cdlt