[C]:26: error: incompatible types in assign
sbix
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
zae -
zae -
salut à tous
Je travaille à present sur les structures et j'ai rencontré un petit problème.
Mon programme consiste à créer une structure, enduite une variable du type de ma structure, puis l'initialiser avec une fonction.
Pour cela j'ai utilisé les pointeurs. Mais lors de la compilation, mon compilateur [gcc sous linux], me donne l'erreur :26: error: incompatible types in assignment.
Ce qui veux dire, je crois, que qu'il y a un problème avec les types de variables.
Voici mon code source :
Merci d'avance pous vos explications.
Je travaille à present sur les structures et j'ai rencontré un petit problème.
Mon programme consiste à créer une structure, enduite une variable du type de ma structure, puis l'initialiser avec une fonction.
Pour cela j'ai utilisé les pointeurs. Mais lors de la compilation, mon compilateur [gcc sous linux], me donne l'erreur :26: error: incompatible types in assignment.
Ce qui veux dire, je crois, que qu'il y a un problème avec les types de variables.
Voici mon code source :
#include<stdio.h> #include<string.h> typedef struct Info_perso Info_perso; struct Info_perso { char nom[100]; char prenom[100]; int age; }; void initialiser(Info_perso* pointeur_mehdi); int main() { Info_perso mehdi; initialiser(&mehdi); printf("Nom: %s\nPrénom: %s\nAge: %d", mehdi.nom, mehdi.prenom, mehdi.age); return 0; } void initialiser(Info_perso* pointeur_mehdi) { (*pointeur_mehdi).nom = ""; (*pointeur_mehdi).prenom = ""; (*pointeur_mehdi).age = 0; }
Merci d'avance pous vos explications.
5 réponses
cpp1.cpp(26) : error C2440: '=' : cannot convert from 'char [1]' to 'char [100]'
There is no context in which this conversion is possible
cpp1.cpp(27) : error C2440: '=' : cannot convert from 'char [1]' to 'char [100]'
There is no context in which this conversion is possible
voilà j'ai lancer ton code sur mon pc (visual studio C++), pour savoir à qu'elle ligne il merdait, et apparement ce sont ces deux là :
(*pointeur_mehdi).nom = "";
(*pointeur_mehdi).prenom = "";
ps : il m'affiche deux erreurs et 0 warning, pour info
maintenant tu vois tt seul où est ton problème ^^
There is no context in which this conversion is possible
cpp1.cpp(27) : error C2440: '=' : cannot convert from 'char [1]' to 'char [100]'
There is no context in which this conversion is possible
voilà j'ai lancer ton code sur mon pc (visual studio C++), pour savoir à qu'elle ligne il merdait, et apparement ce sont ces deux là :
(*pointeur_mehdi).nom = "";
(*pointeur_mehdi).prenom = "";
ps : il m'affiche deux erreurs et 0 warning, pour info
maintenant tu vois tt seul où est ton problème ^^
Ça fait un bout de temps que j'ai fait du C mais, pourquoi tu fais des tableaux de char?
Tu peux pas mettre des strings?
Tu peux pas mettre des strings?
:D
Oui je savais que c'est dans la ligne 26 et 27... mais je ne vois pas comment résoudre ça...
Je pense que ce n'est pas la bonne façon d'initialiser un char, ou alors qu'il ne faut pas procéder ainsi en cas de pointeurs...
Oui je savais que c'est dans la ligne 26 et 27... mais je ne vois pas comment résoudre ça...
Je pense que ce n'est pas la bonne façon d'initialiser un char, ou alors qu'il ne faut pas procéder ainsi en cas de pointeurs...
oui, c'est pas terrible comme utilisation le "=".
ce que tu fait dans ton égalité, c'est une modification de pointeur. Je pense qu'il est plus intélligent de copier les lettre de la chaine dans la chaine initial.
Pour cela utilise la fonction strcpy(char *dest, const char *src).
Un conseil, plutot que la notation lourde (*pointeur_mehdi).nom utilise pointeur_medhi->nom
Mais l'idéal reste les string
ce que tu fait dans ton égalité, c'est une modification de pointeur. Je pense qu'il est plus intélligent de copier les lettre de la chaine dans la chaine initial.
Pour cela utilise la fonction strcpy(char *dest, const char *src).
Un conseil, plutot que la notation lourde (*pointeur_mehdi).nom utilise pointeur_medhi->nom
Mais l'idéal reste les string
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question