Erreur dans un code à priori simple... je ne comprends pas l'erreur.

joshua91 Messages postés 22 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 28 juin 2010 - 28 juin 2010 à 15:44
joshua91 Messages postés 22 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 28 juin 2010 - 28 juin 2010 à 16:59
Bonjour à tous,
Il s'agit surement d'une erreur de gestion de pointeur sur les tableaux de Char... mais je ne vois pas.
C'est à tous les coups une erreur stupide, et je m'en excuse par avance.

voici mon code :
_______________________________________________________________
main.h
typedef struct Personne Personne;
struct Personne{
char prenom[100];
char nom[100];
long age;
};

void initPersonne(Personne* pers);

...
________________________________________________________________

main.c
#include <stdio.h>
#include <stdlib.h>
#include "main.h"

int main()
{
Personne joueur1, joueur2;

initPersonne(&joueur1);
initPersonne(&joueur2);

...

return 0;
}

void initPersonne(Personne* pers)
{
pers->prenom = ""; // ou (*pers).prenom
pers->nom = "";
pers->age = 0;
// C'est ici que j'ai des Error : incompatible types in assignment
// mais uniquement pour nom et prenom.
// Erreur identique si je mets NULL a la place des ""
}
_____________________________________________________________________

voici le log :

main.c||In function `initPersonne':|
main.c|59|error: incompatible types in assignment|
main.c|60|error: incompatible types in assignment|
||Build finished: 2 errors, 0 warnings|

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 juin 2010 à 16:01
Si tu veux initialiser les chaînes à vide, tu ne peux pas le faire comme cela.

Au choix:
- Tu peux utiliser "memset" pour intialiser toutes les cases du tableau à 0 => memst(pers->prenom, 0, 100);
- Plus rapide, tu ne mets que le premier éléments à 0, puisque une chaîne de caractères s'arrêtent de toute façon au caractère terminal 0 => pers->prenom[0] = 0;

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
joshua91 Messages postés 22 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 28 juin 2010
28 juin 2010 à 16:59
Merci beaucoup, en effet je comprends mieux ;)
La 2e solution est plus rapide et est de mon niveau.

Venant du JAVA, les chaines de caractère en C c'est à s'arracher les cheveux!!
0
Rejoignez-nous