IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Pendu : multi-character character constant ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Par défaut Pendu : multi-character character constant ?
    Bonjour,
    Je ne programme pas depuis longtemps en C et j'ai tenté de coder un pendu.
    J'ai pensé coder d'abord le jeu puis le système de dictionnaire.
    Cependant je reste coincé sur le jeu et lorsque le programme s'exécute la console n'affiche rien de plus l'IDE me dit warning : multi-character character constant à plusieurs reprises.
    J'ai donc décidé de sollicité l'aide de programmeurs plus expérimentés que moi pour tenté de débuggé ce code.
    Je tien à signalé que ce code est entièrement de ma composition et que j'ai longtemps cogité sans trouver la solution.

    Voici le main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include "jeu.h"
     
    int main(int argc, char **argv)
    {
    	char word[] = "ANTICONSTITUTIONNELEMENT";
    	char* hideword = createanhideword(word);	// Crée une chaine de même longueur que word mais remplie d'étoiles
    	int* testtab = NULL;
    	int essais = 10;
    	char c = 0;
    	printf("     Le Jeu du Pendu\n\n-------------------------\n");
    	printf("    Codé par WWinlin.\n-------------------------\n\n");
    	do
    	{
    		printf("%s\nIl vous reste %d essais : ", hideword, essais);
    		c = readc();	// Lit une saisie de caractère
    		testtab = finword(word,c);	// Cherche la lettre dans word et renvoie un pointeur sur un tableau d'int agencé de cette façon :
    		//lettre entrée : E
    		//word :   "ELEMENT"
    		//tableau : 1010100 soit {1,0,1,0,1,0,0}
    		unhidec(word,hideword,testtab);	// Révèle des lettres de hideword en fonction du tableau de finword
    		if(strcmp(word,hideword) == 0)
    		{
    			printf("\nFélicitations ! Le mot cherché était en effet %s !", word);
    			exit(0);
    		}
    	}while(essais != 0);
    	printf("\nOh! Comme c'est dommage ! Vous avez perdu ! Le mot était %s !", word);
    	return 0;
    }
    jeu.c qui contient les fonctions...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include "jeu.h"
     
    char readc()
    {
    	char c = 0;
    	c = getchar();	// Lit le caractère
    	c = toupper(c);	// Convertit en majuscule
    	while(getchar() != '/n');	// Efface le buffer
    	return c;
    }
     
    int* finword(char word[], char letter)
    {
    	char actual_letter = 0;
    	int cont = 0;
    	while(word[cont] != '/0')	// Calcule la taille de word
    	{
    		cont++;
    	}
    	int* testtab = malloc(sizeof(int) * cont);	// Alloue l'espace mémoire nécéssaire à testtab
    	cont = 0;
    	while (actual_letter != '/0')	// Compare chaque caractère de word avec la lettre entrée
    	{
    		actual_letter = word[cont];
    		if(actual_letter = letter)
    		{
    			testtab[cont] = 1;	// 1 si identique
    		}
    		else
    		{
    			testtab[cont] = 0; // 0 si différent
    		}
    		cont++;
    	}
    	return testtab;
    }
     
    void unhidec(char word[], char hideword[], int tab[])
    {
    	int cont = 0;
    	while(word[cont] != '/0')	// Suit le plan donné par testtab
    	{
    		if(tab[cont] = 1)	// Révèle la lettre si 1
    		{
    			hideword[cont] = word[cont];
    		}
    	}
    }
     
    char* createanhideword(char word[])
    {
    	int size = 0;
    	int i = 0;
    	while(word[size] != '/0')	// Calcule la taille de word
    	{
    		size++;
    	}
    	char* hideword = malloc(sizeof(char) * (size + 1));	// Alloue l'espace mémoire nécéssaire à hideword
    	for( i = 0 ; i < size ; i++ )	// Initialise hideword avec '*'
    	{
    		hideword[i] = '*';
    	}
    	hideword[size] = '/0';	// Fin de chaine
    	return hideword;
    }
    et jeu.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #ifndef DEF_JEU
    #define DEF_JEU
     
    char readc();
     
    int* finword(char word[], char letter);
     
    void unhidec(char word[], char hideword[], int tab[]);
     
    char* createanhideword(char word[]);
     
    #endif
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    C'est '\0' pas '/0'
    Et '\n' pas '/n'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Eclipse 3.2] JDK 1.4 et JSP : invalid character constant
    Par TreizeSegments dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 16/10/2007, 09h06
  2. Réponses: 3
    Dernier message: 01/05/2007, 18h57
  3. Réponses: 3
    Dernier message: 28/09/2006, 14h33
  4. Errors: too many characters in constant
    Par beb30 dans le forum C
    Réponses: 2
    Dernier message: 03/04/2006, 16h46
  5. erreur: too many characters in constant...
    Par miminou dans le forum C++
    Réponses: 4
    Dernier message: 23/11/2005, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo