A voir également:
- Erreur dans fonction introuvable
- Erreur 1004 vba ✓ - Forum VB / VBA
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Python
- Le chemin d'accès spécifié est introuvable ✓ - Forum Téléchargement
- Fonction si et - Guide
- Python introuvable - Forum Python
6 réponses
Le compilateur est très clair: il y a de la redéfinition dans l'air, à savoir:
- void lireFichier(FILE* dictionnaire, char* chaine)
- char chaine[] = "";
Quand tu utiliseras 'chaine', il ne saura pas s'il faut prendre celui passé en paramètre où celui déclaré dans la fonction, d'où ses interrogations.
Bonne continuation.
- void lireFichier(FILE* dictionnaire, char* chaine)
- char chaine[] = "";
Quand tu utiliseras 'chaine', il ne saura pas s'il faut prendre celui passé en paramètre où celui déclaré dans la fonction, d'où ses interrogations.
Bonne continuation.
control reaches end of non-void function
En clair, il s'agit d'une fonction 'non-void' (en l'occurence une fonction 'int'), dont on a oublié de retourner une valeur.
Bonne continuation.
En clair, il s'agit d'une fonction 'non-void' (en l'occurence une fonction 'int'), dont on a oublié de retourner une valeur.
Bonne continuation.
met pourquoi mettre void puisque je retourn la variable i est du type int donc la sortie de la fonction doit etre int
donc si j'ai compris ce que tu ma dit c'est le copilateur qui m'indique que j'ai une erreur alors que en faite il y en a pas puisuq ema fonction est non-void
int motAleatoir(char* motSecret, int MAX)
{
int motMystere = 0;
srand(time(NULL));
motMystere = (rand() % (MAX - 1 + 1)) + 1;
}
la il me mette 2 erreur dans cette fonction:
/home/user/pendu/fonction.c||In function ‘motAleatoir’:| /home/user/pendu/fonction.c|62|attention : implicit declaration of function ‘time’| /home/user/pendu/fonction.c|64|attention : control reaches end of non-void function| ||=== Build finished: 2 errors, 0 warnings ===|
bon al 2 eme je sais d'ou sa vient et c'est surtout la 1ere erreur d'ou je ne comprend pas d'ailleur je ne comprend pas la fonction je sais juste a quoi elle sert
Tu as compris.
Un détail, malgré tout: Même si tu oublies de mettre un 'return', la compilation se fait quand même (note que le compilateur te signale 'attention' et non 'erreur') et le programme pourra donc être exécuté. A la sortie de ta fonction, une valeur ne sera donc pas toujours retournée, mais l'appellant considère qu'une valeur est toujours retournée et il va donc en lire une... qui sera absolument n'importe quoi. C'est la raison pour laquelle, il faut, à moins d'être certain de ce que l'on fait, toujours traiter toutes les remarques du compilateur.
D'autre part:
return i;
fclose(dictionnaire);
Une fois retourné à l'appellant, le programme ne se poursuit plus dans ta fonction; en conséquence, 'fclose' ne sera jamais exécuté.
Bonne continuation.
Un détail, malgré tout: Même si tu oublies de mettre un 'return', la compilation se fait quand même (note que le compilateur te signale 'attention' et non 'erreur') et le programme pourra donc être exécuté. A la sortie de ta fonction, une valeur ne sera donc pas toujours retournée, mais l'appellant considère qu'une valeur est toujours retournée et il va donc en lire une... qui sera absolument n'importe quoi. C'est la raison pour laquelle, il faut, à moins d'être certain de ce que l'on fait, toujours traiter toutes les remarques du compilateur.
D'autre part:
return i;
fclose(dictionnaire);
Une fois retourné à l'appellant, le programme ne se poursuit plus dans ta fonction; en conséquence, 'fclose' ne sera jamais exécuté.
Bonne continuation.
implicit declaration of function ‘time’
En clair, le compilateur ne sait pas d'où sort cette fonction; il ne sait donc pas ce que retourne cette fonction, est-ce un pointeur, un entier, un float... il ne sait donc pas comment traiter cette valeur (devant cette déclaration implicite, il va, par défaut, considérer que c'est un 'int').
Il faut donc inclure le fichier qui permet de répondre à la question du compilateur. Je te laisse deviner lequel (un 'man 2 time' te donnera la réponse).
En clair, le compilateur ne sait pas d'où sort cette fonction; il ne sait donc pas ce que retourne cette fonction, est-ce un pointeur, un entier, un float... il ne sait donc pas comment traiter cette valeur (devant cette déclaration implicite, il va, par défaut, considérer que c'est un 'int').
Il faut donc inclure le fichier qui permet de répondre à la question du compilateur. Je te laisse deviner lequel (un 'man 2 time' te donnera la réponse).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici quatre lignes extraites de ton code:
#define TAILLEMAX 1000 char motSecret[] = ""; motAleatoir(motSecret, MAX, dictionnaire); fgets(motSecret, TAILLEMAX, dictionnaire);Je ne te donne pas la solution mais te souhaite une bonne réflexion ;-)
désolé de cette longue absence j'étais occuper ^^
Bon voila comment je vois ma fonction
ma fonction et du type void je met en entré le tableau qui va contenir le mot secret je met MAX (la variable MAX contient le nombre de ligne) et je met le dictionnaire.
Puis après je met cette fonction
Puis je fais une boucle
cette boucle dit "tant que i est different de la variable motMystere alors continue"
donc elle va lire le dictionnaire et elle va stocker le mot dans motSecret.
donc voila moi dans cette boucle je ne vois que un seul problème c'est que tout les mot des dictionnaire vont être stocker dans motSecret
elle est la l'erreur ou c'est pas sa ??
Bon voila comment je vois ma fonction
void motAleatoir(char* motSecret, int MAX, FILE* dictionnaire)
ma fonction et du type void je met en entré le tableau qui va contenir le mot secret je met MAX (la variable MAX contient le nombre de ligne) et je met le dictionnaire.
Puis après je met cette fonction
srand(time(NULL));
motMystere = (rand() % (MAX - 1 + 1)) + 1;
elle va servir à tirer un mot de façon aléatoire.
Puis je fais une boucle
for(i = 0; i != motMystere; i++)
{
fgets(motSecret, TAILLEMAX, dictionnaire);
}
cette boucle dit "tant que i est different de la variable motMystere alors continue"
donc elle va lire le dictionnaire et elle va stocker le mot dans motSecret.
donc voila moi dans cette boucle je ne vois que un seul problème c'est que tout les mot des dictionnaire vont être stocker dans motSecret
elle est la l'erreur ou c'est pas sa ??
26 sept. 2009 à 19:33
int lireFichier(FILE* dictionnaire, char* chaine) { int i = 0; dictionnaire = fopen("/home/user/pendu/motPendu.tkt", "r"); if(dictionnaire != NULL) { while(fgets(chaine, TAILLEMAX, dictionnaire) != NULL) { i++; } return i; fclose(dictionnaire); } else { printf("Votre fichier n'a pas put s'ouvrire\n"); } }voila ce que sa me dit comme erreur
je ne comprend pas cette erreur