Partage
  • Partager sur Facebook
  • Partager sur Twitter

error: expected expression before ']' token

TP du pendu...

Sujet résolu
5 décembre 2010 à 13:33:24

Bonjour, j'ai un petit problème (mais qui empeche tout :euh: ) Alors, déjà je ne sais pas trop ce qui va se passer avec ce programme, mais je suis dans l'impossibilité de le lancer: meme en regardant la solution, je n'ai as trouver le problème:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char lireCaractere();
int gagner (int lettrestrouves[]);
int lettrejuste (char essai[], char motsecret[], char lettrestrouves[]);

int main()
{
    int life=10;
    int gagne=0;
    int lettretrouves[6]={0};
    char motsecret[]="MARRON";
    char essai[2];
    while (life>0 && gagne!=1)
    {
        printf("\n\nIl vous reste %d coups à jouer. =P\n", life);
        printf("Quelle lettre?");
        essai[2]=lireCaractere();
        int lettrebonne=0;
        lettrebonne=lettrejuste(essai[], motsecret[], lettretrouves[]);
        if (lettrebonne==1)
        {
            printf("Lettre juste!");
        }
        else
        {
            life--;
            printf("Il vous reste encore %d coups...", life);
        }
        int i;
        for (i=0;i>6;i++)
        {
            if (lettretrouves[i]==1)
            {
                printf("%c", motsecret[i]);
            }
            else
            {
                printf("*");
            }
        }
        gagne=gagner(lettretrouves[]);
    }
    return 0;
}

char lireCaractere()
{
    char caractere = 0;

    caractere = getchar(); // On lit le premier caractère
    caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà

    // On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)
    while (getchar() != '\n') ;

    return caractere; // On retourne le premier caractère qu'on a lu

}

int lettrejuste (char essai[], char motsecret[], char lettrestrouves[])
{
    int i=0;
    int booleen=0;
    for (i=0; i>6; i++)
    {
        if (essai=motsecret[i])
        {
            booleen=1;
            lettrestrouves[i]=1;
        }
    }
    return booleen;
}

int gagner (int lettrestrouves[])
{
    int i;
    int booleen=1;
    for (i=0; i>6; i++)
    {
        if (lettrestrouves==0)
        {
            booleen=0;
        }
    }
    return booleen;
}

Le debugger me met deux fautes:
-ligne 22: error: expected expression before ']' token
-ligne 44: error: expected expression before ']' token
Voilà, je vous remercie de votre future aide :D
  • Partager sur Facebook
  • Partager sur Twitter
5 décembre 2010 à 13:40:47

Salut !

//Ligne 22
lettrebonne=lettrejuste(essai, motsecret, lettretrouves);
//Ligne 44
gagne=gagner(lettretrouves);


Ca devrait déjà être mieux ;)
Pour des explications je te conseil de bien relire le cours !

Edit : Ah et au fait dans ta fonction lettrejuste tu fais passer 3 char, mais tu déclares lettretrouves de type int
int lettretrouves[6]={0};
// =>
char lettretrouves[6]={0};
  • Partager sur Facebook
  • Partager sur Twitter
5 décembre 2010 à 13:49:33

Ok merci beaucoup, maintenant je souffre d'un autre problème :-° Lorsque j'envoie mon code, il me met uniquement quelle lettre, je remplis une lettre juste, puis il va directement sur le else avec "il te reste 9 coups... ", puis la console se ferme... Je ne sais pas comment faire, ce n'est pas par flemme :(
P.S: Dj Slim, ton avatar est un de mes héros ;)

Edit:
C'est bon j'ai trouvé (si d'autres cherchent après x). Problème côté des i>6 et non inférieur à 6... :D et côté if, oublie de mettre deux barres d'égal :)
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2011 à 20:07:09

Salut à tous j'ai sensiblement la même erreur meme si mon programme n'a pas le meme but donc je me suis dit que quelqu'un serai surement capable de comprendre, quand je compile j'ai le droit à "14 error: expected expression before ' )' token" mais je ne vois pas l'erreur :/ quelq'un pourrait'-il m'aider ?

voilà le code ( je ne met que la fonction qui pose problème :)




int resultatDe = 0, MIN = 1, MAX =6;
resultatDe = (rand() % (MAX - MIN +)) + MIN;
printf("Pour vaincre l'humain, de niveau 1 vous avez besoin d'un résultat de 5");
printf("Votre force étant de %d, à laquelle on ajoute le résultat du de : %d, ", force, resultatDe);


merci d'avance ;)
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2011 à 21:23:07

Bonsoir,

Quand tu as du code à poster met le entre balises code et puis si possible indique bien qu'elle est la ligne en question.

Pour ton erreur :

int resultatDe = 0, MIN = 1, MAX =6;
//Tu as mis un "+" après le premier MIN
//resultatDe = (rand() % (MAX - MIN +)) + MIN;
//Voici la ligne corrigée..

resultatDe = (rand() % (MAX - MIN)) + MIN;

printf("Pour vaincre l'humain, de niveau 1 vous avez besoin d'un résultat de 5");
printf("Votre force étant de %d, à laquelle on ajoute le résultat du de : %d, ", force, resultatDe);
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2011 à 23:45:10

Désolé je ne connaissais pas les balises ^^'

Merci pour ta réponse :D c'est vrai qu'en fait l'erreur est évidente ^^'
  • Partager sur Facebook
  • Partager sur Twitter
19 février 2020 à 20:46:13

Bonsoir, j'ai un petit problème  vous pouvez m'expliquer ce message la !!!!

// [Error] expected ')' before ';' token  //

merci pour votre réponse 

  • Partager sur Facebook
  • Partager sur Twitter
19 février 2020 à 20:47:27

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter