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

Signaler
Messages postés
22
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
28 juin 2010
-
Messages postés
22
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
28 juin 2010
-
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

Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
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]
Messages postés
22
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
28 juin 2010

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!!