Error : incompatible types in assignment
Résolu
Naoji
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je suis débutant en C et j'essaie de créer jeu ( le pendu ) mais ça plante a la ligne 28.
L'erreur est "incompatible types in assignment".
Voici mon code :
PS : il y a surement d'autres erreurs ^ ^
L'erreur est "incompatible types in assignment".
Voici mon code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "fichier.h"
char lireCaractere();
char* transMotEtoile (char* motEtoile, char essaiLettre, char* motSecret);
int nombCoups (char essaiLettre, char* motEtoile, int nbCoups);
int main(int argc, char *argv[])
{
char motEtoile[] = "*****";
char motSecret[] = "ROUGE";
char essaiLettre;
int nbCoups = 10;
if (motEtoile != motSecret)
{
if (nbCoups != 0)
{
while (motEtoile != motSecret)
{
printf ("Bienvenue dans le Pendu\n\n\n");
printf ("Il vous reste %d coups a jouer\n", nbCoups = nombCoups (essaiLettre, motEtoile, nbCoups));
motEtoile = transMotEtoile (motEtoile, essaiLettre, motSecret); // l'erreur est là
printf ("Quel est le mot secret ? %s", motEtoile);
printf ("Proposez une lettre : ");
essaiLettre = lireCaractere();
printf ("\n\n");
}
}
else
printf ("Perdu !!");
else
printf ("Gagne ! Le mot secret etait bien : %s", motSecret);
return 0;
}
char* transMotEtoile (char* motEtoile, char essaiLettre, char* motSecret)
{
int i = 0;
while (i < 5)
{
if (essaiLettre == motSecret[i])
{
essaiLettre = motEtoile[i];
i++;
}
else
i++;
}
return motEtoile;
}
char lireCaractere()
{
char caractere = 0;
caractere = getchar();
caractere = toupper(caractere);
while (getchar() != '\n') ;
return caractere;
}
int nombCoups (char essaiLettre, char* motEtoile, int nbCoups)
{
int i = 0;
while (i < 5)
{
if (essaiLettre != motEtoile[i])
i++;
else
{
nbCoups--;
i = 5;
}
}
return nbCoups;
}
PS : il y a surement d'autres erreurs ^ ^
A voir également:
- Incompatible types in assignment of
- Eespt technical error ✓ - Forum TNT / Satellite / Réception
- Fan error lenovo - Forum PC portable
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Pointage antenne trop faible - Forum Box et Streaming vidéo
- Error 1962 ✓ - Forum PC fixe
2 réponses
Ah les problèmes de pointeurs et de tableaux ... !!! ;-)))
Je suppose que la ligne incriminée comme étant erronée est:
motEtoile = transMotEtoile (...);
Pourquoi le compilateur râle ?
'motEtoile' a été déclaré comme un tableau de caractères mais aussi, de manière sous-jacente, comme un pointeur constant; ce qui signifie qu'il ne peut être modifié, il ne peut que pointer sur le premier élément du tableau. Il ne peut donc pas prendre la valeur de retour de la fonction 'transMotEtoile'.
Pour résoudre ce type de problème, mais je n'ai pas lu tout ton programme, il faut, pour récupérer la valeur de retour d'une fonction, avoir un pointeur déclaré simplement comme 'char*'.
Bonne continuation.
Je suppose que la ligne incriminée comme étant erronée est:
motEtoile = transMotEtoile (...);
Pourquoi le compilateur râle ?
'motEtoile' a été déclaré comme un tableau de caractères mais aussi, de manière sous-jacente, comme un pointeur constant; ce qui signifie qu'il ne peut être modifié, il ne peut que pointer sur le premier élément du tableau. Il ne peut donc pas prendre la valeur de retour de la fonction 'transMotEtoile'.
Pour résoudre ce type de problème, mais je n'ai pas lu tout ton programme, il faut, pour récupérer la valeur de retour d'une fonction, avoir un pointeur déclaré simplement comme 'char*'.
Bonne continuation.