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
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Error 1962 ✓ - Forum PC fixe
- Bad request error 403 paiement ✓ - Forum Réseaux sociaux
- A javascript error occurred in the main process - Forum Matériel & Système
- Network error iptv - Forum TV & Vidéo
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.