Probélme de compilation en C

Quel âge avez-vous ?

Moins de 18 ans

18 ans ou plus

CDeX   Probélme de compilation en C 36 21/04/10 à 08:03

Bonjour à toutes et à tous

Voilà, j'ai commencé a programmer en c depuis peu, mais j'ai un petit souci. Je travaille avec codeblocks et lorsque je teste mon programme dans l'environement il se lance et se déroule parfaitement. Seulement, quand je veux le compiler, l'executable et créé mais lorsque que je le lance, la fenetre s'ouvre et se ferme aussi tot, impossible donc d'utiliser mon programme.
Si quelqu'on pouvait m'aider, je lui serai reconnaissant.

Merci
CDeX

CDeX   
Probélme de compilation en C 1/36 21/04/2010 à 09:42
Personne ? Dommage ...
CDeX   
Probélme de compilation en C 2/36 21/04/2010 à 13:42
Svp ....
Probélme de compilation en C 3/36 21/04/2010 à 13:44
J'ai absolument rien compris.

Il y a un message de rapport d'erreurs à la fin ? Une fois que ton programme plante. Si c'est le cas il est peut être trop lourd pour ton ordi, ou bien l'installation a peut être eu un problème. Installe de nouveau pour voir ?
Probélme de compilation en C 4/36 21/04/2010 à 15:17
Problème de compilation ? installe mingw et regarde des forums pour l'utiliser avec code blocks j'ai eu le même problème quand j'ai commencé à programmer avec code-blocks beaucoup de forum en parle une petite recherche sur google et le tour est joué si tu veux un peu plus d'aide mp moi =)
Probélme de compilation en C 5/36 21/04/2010 à 17:10
Ou sinon file ton code et on te le corrige.
Parce que si ça se ferme immédiatement, c'est qu'il a planté, donc que tu l'as mal codé.

Là on peut rien te dire à part « corrige-le ».
Probélme de compilation en C 6/36 21/04/2010 à 17:31
Haha, vous êtes tous passés par là si vous avez débuté avec un IDE (et p'têt avec gcc).

En fait, ce qui se passe, c'est que ton programme se lance dans une invite de commande, et dès qu'il se termine, le ferme.
Si tu veux éviter ça, il faut mettre une instruction qui met en pause ton programme. Je sais plus, il me semble que c'est :

SYSTEM("PAUSE");

Il me semble qu'on peut aussi tout simplement mettre :

getchar();

Dans le premier cas, c'est le système qui va attendre que l'utilisateur appuie, tandis que dans le second, c'est le programme qui attend que le stdin reçoive un caractère.
La différence ? C'est que la première instruction ne fonctionne que sous Windows. Si tu veux quand même l'utiliser tout en ayant un programme portable, il faut utiliser les directives de préprocesseur.

Corrigez si je me trompe. Smile Jap
CDeX   
Probélme de compilation en C 7/36 21/04/2010 à 18:32
Merci de vos conseil, mais maintenant, j'ai un autre souci. Mais là ça concerne le contenu de mon programme. Il n'est pas très complexe donc si quelqu'un se sent l'âme charitable pour vérifier mes lignes ... Very Happy

Merci
Probélme de compilation en C 8/36 21/04/2010 à 18:35
CDeX a écrit :

Merci de vos conseil, mais maintenant, j'ai un autre souci. Mais là ça concerne le contenu de mon programme. Il n'est pas très complexe donc si quelqu'un se sent l'âme charitable pour vérifier mes lignes ...

Merci


Envoi sur le topic on pourra surement t'aider autrement là on ne peut rien faire Rolling Eyes
Probélme de compilation en C 9/36 21/04/2010 à 18:55
+1.

Ah oui, pour le getchar(), il ne faut pas oublier de vider le buffer. Sinon j'crois pas que ça marche.
Probélme de compilation en C 10/36 21/04/2010 à 19:27
System(pause); Sous windows.

Merde, doublé XD
CDeX   
Probélme de compilation en C 11/36 21/04/2010 à 19:31
d'accord alors vois ci mon petit programme le souci cette fois est que lorsque que je le lance, quelque soit la réponse, le jeux se lance quand même ( oui c'est un petit jeux en console ... ne me lancez pas de pierre s'il vous plait )



#include < stdio.h> ( j'ai mis l'espace après les < sinon il le prend pou une balise -_-)
#include < stdlib.h>
#include < time.h>

int main(int argc, char *argv[])

{
int reponse =0, jeux =reponse=1;
printf ("\t\n\n Veut-tu jouer ? ");
printf ("\t\t\n 1 - oui ");
printf ("\t\t\n 2 - non ");
scanf ("%d",&reponse);
if (jeux)
{
srand(time(NULL));


int niveau=0;
printf("\tChoisi un niveau de jeu");
scanf("%d",&niveau);

int MAX=100*niveau, MIN=1, coups=0;
int nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
int nombreEntre=0;

do
{
coups++;
printf ("\n\n\t Quel est le nombre mystere ?");
scanf("%d",&nombreEntre);
if (nombreEntrenombreMystere)
printf ("\n\n\t Non, c'est moins");
else
printf ("\n\n\t Bravo tu as trouve =) en %d coups \n\n\n\n\n",coups);

}while(nombreEntre!=nombreMystere);
return 0;
}


else;
{
printf("\ndommage, a bientot\n\n\n\n\n");
return 0;
}
}
Probélme de compilation en C 12/36 21/04/2010 à 19:40
EDIT : Je viens de regarder le code : T'as des ; après tes while / if / else ...

RE-edit : Une fois corrigés les problèmes (suite à la copie du truc dans SE) : Je n'ai aucun problème : Si ce n'est les fautes d'orthographe.
CDeX   
Probélme de compilation en C 13/36 21/04/2010 à 19:43
tu a obtenu plein d'erreur alors qu'il tourne, bizarre, tu as penser a retirer les espaces dans les premiere ligne ? j'ai étais obliger de les mettre sinon le site pense que c'est des balise et ne les affiches pas.

#include < stdio.h> ( j'ai mis l'espace après les < sinon il le prend pou une balise -_-)
#include < stdlib.h>
#include < time.h>
CDeX   
Probélme de compilation en C 14/36 21/04/2010 à 19:45
non il n'y en a pas, il y en a juste un après le while, mais ça a tjs marcher comme ça, je veux dire, mon programme se lance, le souci c'est que qd je lui dis que je ne veux pas jouer, le jeu se lance quand même
Probélme de compilation en C 15/36 21/04/2010 à 19:47
if (nombreEntrenombreMystere)

‘nombreEntrenombreMystere’ n'est pas déclaré, déjà.

int reponse =0, jeux =reponse=1;

Ça ça veut dire que reponse et jeux valent tous les deux 1.


Ensuite, tu mets
scanf ("%d",&reponse);

Donc le choix du joueur va dans la variable reponse.
Mais ensuite ton if vérifie la valeur de jeux, c'est pas logique.
Il faut que ton if soit : if (reponse == 1)
et là ça marche.

Plus loin, tu fais
if (nombreMystere)
c'est faux, ici tu dois vérifier si nombreMystere est identique à nombreEntre
Donc il faut mettre : if (nombreMystere == nombreEntre)

Probélme de compilation en C 16/36 21/04/2010 à 19:50
Un ; en trop 5 lignes avant la fin, juste après le else.

Sinon ton souci vient de la ligne : int reponse =0, jeux =reponse=1;
Là, reponse prend 0, jeux prend reponse qui lui prend 1, donc ils valent tous 1.

EDIT : Problème corrigé :
Au lieu de if(jeux), tu mets if(reponse == 1)
Tu peux virer la déclaration de jeux.

@Bruckneudorf : J'avais remarqué le même truc : C'est que SE a viré le caractère < à la copie ;)
Probélme de compilation en C 17/36 21/04/2010 à 19:53
Et pour faire une saisie sécurisée avec scanf, il faut toujours contrôler ce que tu reçois.
Sinon, tu prends un getchar().

Va voir le tuto "Saisie sécurisée avec scanf" sur developpez.

Sinon, vu les bourdes que tu as faites, il vaudrait mieux que tu apprennes à relire tes codes plus sérieusement. x)
CDeX   
Probélme de compilation en C 18/36 21/04/2010 à 19:54
Bruckneudorf je te mp mon code si tu veux tu comprendra mieux, ici tout les symbole n'aparaisse pas, certain son prix comme balise :s
Probélme de compilation en C 19/36 21/04/2010 à 19:55
-censuré-

Voilà.

Voilà, pas de lien. Kate
Probélme de compilation en C 20/36 21/04/2010 à 19:55
Sinon, colle ton code sur un Pastebin, et demande à La_Poste de nous le mettre. Rolling Eyes

Rien que pour la mise en forme, c'est déjà chiant à lire.
Recommande ce site a tes ami(e)s | Aller en haut

Partenaires : Énigmes en ligne