SOS appel de fonction en C (bon msg)

mumberea Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   13
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   13
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   13
 
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
mumberea
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 70 Date d'inscription   Statut Membre Dernière intervention   2
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"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 70 Date d'inscription   Statut Membre Dernière intervention   2
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 70 Date d'inscription   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 299
 
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