Rechercher : dans
Par :

Error : incompatible types in assignment

Dernière réponse le 12 nov 2009 à 22:35:43 Naoji, le 11 nov 2009 à 23:00:08 
 Signaler ce message aux modérateurs

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 ^ ^
Configuration: Mac OS X
Safari 531.9

Meilleures réponses pour « error : incompatible types in assignment » dans :
Parse error: syntax error, unexpected $end VoirLorsque l'on programme en Php, on se retrouve inévitablement un jour devant ce genre d'erreur: Parse error: syntax error, unexpected $end in Command line code on line 1 En français, ça signifie grossièrement: "Erreur d'analyse du code: il y a une...
PHP Parse error: unexpected '&lt;' in ... eval()'d code on l VoirSymptômes Lors de l'utilisation de la fonction eval() en PHP, ce dernier se plaint et vous affiche un message de la forme suivante : PHP Parse error: syntax error, unexpected '
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Java: Les méthodes VoirLa notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...

1

loupius, le 12 nov 2009 à 00:18:19

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.

Répondre à loupius

2

Naoji, le 12 nov 2009 à 20:17:23

Aaaaah bah oui !!
Merci beaucoup loupius :)

Répondre à Naoji

3

Pacorabanix, le 12 nov 2009 à 20:55:56

N'oublie pas de mettre le sujet en résolu ;)

Répondre à Pacorabanix

4

 tiobet, le 12 nov 2009 à 22:35:43

Je m'en charge.


Tiobet. Piles non fournies.
Chuck Norris fonctionne en mode Sans Echecs.

Répondre à tiobet