Error : incompatible types in assignment

Résolu/Fermé
Naoji - 11 nov. 2009 à 23:00
 Utilisateur anonyme - 12 nov. 2009 à 22:35
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 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
12 nov. 2009 à 00:18
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
Aaaaah bah oui !!
Merci beaucoup loupius :)
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
12 nov. 2009 à 20:55
n'oublie pas de mettre le sujet en résolu ;)
0
Utilisateur anonyme > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
12 nov. 2009 à 22:35
Je m'en charge.


Tiobet.
0