Error : incompatible types in assignment

Résolu
Naoji -  
 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 :


#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 ^ ^

2 réponses

loupius Messages postés 789 Statut Membre 148
 
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.
0
Naoji
 
Aaaaah bah oui !!
Merci beaucoup loupius :)
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
n'oublie pas de mettre le sujet en résolu ;)
0
Utilisateur anonyme > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
Je m'en charge.


Tiobet.
0