SOS appel de fonction en C (bon msg)

Fermé
mumberea Messages postés 71 Date d'inscription samedi 19 mars 2011 Statut Membre Dernière intervention 24 mai 2024 - 5 août 2011 à 01:45
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 août 2011 à 15:03
Bonjour,

Bonjour,

J'écris un petit jeu de devinette en langage C nommé "Tout ou rien". J'utilise le compilateur Codes::Blocks 8.02

Voici le lien vers le fichier en texte brut qui contient les codes sources: clique ici

Il y 3 fonctions appelées: mode1, mode2 et rejouer.
Les appels de mode1 et rejouer se font sans problème. La preuve en est que si j'enlève tous les appels de mode2(), la compilation ne sort aucun bug et le programme tourne à merveil.



Tu comprend donc que c'est l'appel de mode2() qui génère un bug dont voici le message d'erreur:

-------------- Build: Debug in Tout ou rien ---------------

Linking console executable: bin\Debug\Tout ou rien.exe
D:\Program Files\CodeBlocks\MinGW\bin\ld.exe: cannot open output file bin\Debug\Tout ou rien.exe: Permission denied
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings




J'ai essayé de désactive l'antivirus pensant que pour une raison ou une autre son pare-feu bloquait le programme. Mais rien ne s'est passé.

J'avoue que je n'y comprend rien.
Je continue de chercher la solution sur la toile.
Une n-iem main me sera très utile








A voir également:

5 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
5 août 2011 à 09:22
Salut.
Pour commencer, petite précision, code::blocks n'est pas le compilateur, mais l'IDE. Le compilateur c'est gcc.
L'erreur n'a rien à voir avec la fonction mode2, je pense que c'est un hasard.
J'ai remarqué que gcc n'aimait pas trop les espaces dans les noms de fichier. Essai ta compilation en modifiant le nom de ton programme.
0
magicshark Messages postés 402 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 6 mai 2014 13
5 août 2011 à 11:30
j'ai telecharger ton fichier et moi c'est rejouer qu'il ne trouve pas... :/
ensuite j'ai bidouiller pour le faire moi meme ton nombre aléatoire peut être negatif ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
5 août 2011 à 11:37
On n'a pas le fichier "modes.h", c'est surement là qu'est défini rejouer();
0
magicshark Messages postés 402 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 6 mai 2014 13
5 août 2011 à 11:51
si si on là^^ il est en plein milieu il ya une phrase qui le precise ici les modes un truc du genre et donc j'ai tout bien fait et ça a merder ^^ du coup j'ai copier coller le main j'ai creer une fonction debut() que j'appelle ds mon main() et je renomme tout les rejouer par debut ^^ j'ai quelques warning car j'ai pas trop lu le code que je trouve bien compliqué pour un jeu si simple (j'ai fait le même sur ma casio en beaucoup moins de ligne :p)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
5 août 2011 à 12:08
Moi aussi je trouve ça très compliqué ;-)
Finalement ce jeu du "Tout ou Rien" c'est ce qu'on appelle classiquement un "Plus ou Moins"
0
magicshark Messages postés 402 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 6 mai 2014 13
5 août 2011 à 12:35
ouep en gros c'est tout con une fonction qui prend deux parametre nbmyst et nbUser elle retourne si C plus moins ou egal et apres le reste c'est trois procedure une pour l'initialisation du jeux et les autre pour les modes de jeux.
0
mercis d'avoir répondus. J'ai lus sur le net que ce genre de message d'erreur:

Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
n'apparait que lors de grave erreur. D'un autre côté, vous pouvez constater que le message donne 0 erreurs. J'avoue que jusque là les choses sont floues...Mais l'essentiel est que j'ai pus résoudre le problème.
Voici ce qui n'allait pas:
mes deux fonction mode1() et mode2() je les avais définis dans un fichier.c appelé modes.c . Il s'est fait que j'avais oublier de les séparer par un ";" (oubliant que chaque fonction est une grosse instruction donc l'utilisation du ";" pour les séparer s'impose). Et après tous a marché comme sur des roulettes.

Pour le nom du jeu c'est bien "Plus ou moins". Je ne sais pas ce qui m'a pris de l'appeler "Tout ou rien".

Mercis à tous!
Vive le forum de commencamarche.net!
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 août 2011 à 00:51
Process terminated with status x, correspond à la valeur du return de la fonction main...
Sauf que toi ton main est fait avec un void, donc il n'y a pas de return 0 qui pourrait dire que ton programme se termine bien, alors forcément il te dit que ça se termine mal !
0
mumberea Messages postés 71 Date d'inscription samedi 19 mars 2011 Statut Membre Dernière intervention 24 mai 2024 2
6 août 2011 à 01:23
non je ne crois pas le problème soit à ce niveau. Pcq en regardant bien mes codes tu verras que nulle par le programme n'aura à lire l'instruction return x si je la mettait en fin de main.c pcq j'ai prévus des sorties dans chacunes des fonctions (selon la volonté du joueur). C'est d'ailleurs pourquoi maintenant que j'ai pus résourdre mon problème les choses sont revenues normalement. C'est à dire qu'après exécution (réussite) de mon programme, le msg suivant apparait dans le Build log:
Process terminated with status 0 (1 minutes, 3 seconds)
Voici mon fichier projet (sous code block 8.02) : MonProjet
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 août 2011 à 01:32
"nulle par le programme n'aura à lire l'instruction return x"... C'est bien le problème ;-)

Si ton programme se quitte avec Ctrl+C, la croix, l'arrêt du débogage... Tu auras un status 1 !
Ce n'est que si tu le précises explicitement avec un return 0; ou un exit(0); que tu auras un status 0...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mumberea Messages postés 71 Date d'inscription samedi 19 mars 2011 Statut Membre Dernière intervention 24 mai 2024 2
6 août 2011 à 01:47
si tu prend le temps de lire mon projet, dont le lien se trouve plu haut, (précisement le main.c), tu verras que ajouter une instruction return 0 à la fin serait une instruction de trop. Ou bien alors je ne comprend pas bien ce que tu veux me dire. explique moi clairement pourquoi tu tiens à ce que j'ajoute cette instruction return 0 pendant que tel que mon programme est, après la compilation (qui se déroule à merveille), il n'y a aucun msg d'erreur: c'est à dire status 0 (c'est à dire "tout va bien")

Compile le et dit moi quoi!
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 août 2011 à 03:14
Ton code je l'ai regardé ce matin, et il me semblait qu'avec l'appel à la fonction rejouer(), il ne se terminait jamais, c'est à dire que pour l'arrêter tu étais obligé de faire une manipulation genre fermer la croix ou autre. Alors comme tu parlais de status 1 plus haut, j'essayais de t'expliquer pourquoi tu l'aurais obtenu. Si ton programme se termine bien tant mieux, franchement c'est le principal, mais du coup je ne sais pas pourquoi tu nous parle de ce status depuis tout à l'heure si le tien est à 0...
0
mumberea Messages postés 71 Date d'inscription samedi 19 mars 2011 Statut Membre Dernière intervention 24 mai 2024 2
6 août 2011 à 11:15
En lisant la discussion depuis le début tu comprendras que j'avais un problème (ce qui expliquait mon status 1). Heureusement ce problème je l'ai résolu. La solution a été exposée aussi plus haut.
mercis pour tes reactions
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 août 2011 à 15:03
le status de 1 est retourné par l'éditeur des lien pas par le programme. Vous ne parlez pas de la même chose.
0