Comment faire pour que la fenetre dos ne se ferme pas

Comment faire pour que la fenetre dos ne se ferme pas - C++ - Programmation

Marsh Posté le 10-12-2002 à 21:46:21    

Je fais un programme en c,je le compile avec dev c++ et je l'execute,mais le probleme c'est que quand je l'execute,il se ferme tout seul a la fin et je n'ai pas le temps de voir le printf.
Mon code est le suivant:
 

Citation :

#include<stdio.h>
int num;
void main()
{
printf("entre un num: \n" );
scanf("%i",&num);
printf("ton num est %i\n",num);
 
}


 
Comme je doit faire pour pas que la fenetre se ferme?

Reply

Marsh Posté le 10-12-2002 à 21:46:21   

Reply

Marsh Posté le 10-12-2002 à 21:48:03    

système bourrin :  

system("pause" );


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 21:51:11    

antp a écrit :

système bourrin :  

system("pause" );




 
je l'ai mis apres le printf et ca marche pas :/

Reply

Marsh Posté le 10-12-2002 à 21:52:28    

ca me fait une erreur de compilation

Reply

Marsh Posté le 10-12-2002 à 21:56:18    

tu peux faire un getchar();


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 21:57:21    

C'est pas getchar()
 
Tu le met a la fin de ton prog et je crois qu'a la fin il faut faire un retour chariot pour fermer la fenetre... Je ne suis pas sur je n'ai jamais fait de C mais comme en pascal c writeln je crois qu'avec le C ca marche.

Reply

Marsh Posté le 10-12-2002 à 21:57:31    

Oups grilled :D

Reply

Marsh Posté le 10-12-2002 à 22:02:21    

j'ai fait ca et ca ne marche pas

Citation :

#include<stdio.h>
int num;
void main()
{
printf("entre un num: \n" );
scanf("%i",&num);
printf("ton num est %i",num);
getchar();
}
 


Reply

Marsh Posté le 10-12-2002 à 22:04:22    

"ça marche pas"
c'est à dire ?
essaie un fflush(stdin); avant le getchar, au cas où des caractères resteraient dans le buffer...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 22:07:00    

#include <stdlib.h> pour system
 
 
et si tu fais des executables en mode texte DOS, lance les dans une console DOS  :whistle:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 22:07:00   

Reply

Marsh Posté le 10-12-2002 à 22:07:44    

antp a écrit :

"ça marche pas"
c'est à dire ?
essaie un fflush(stdin); avant le getchar, au cas où des caractères resteraient dans le buffer...


 
ca marche comme ca :)

Reply

Marsh Posté le 10-12-2002 à 22:08:23    

et ca sert a koi alors ca:
 

Citation :

fflush(stdin);  
getchar();

Reply

Marsh Posté le 10-12-2002 à 22:10:25    

forummp3 a écrit :

et ca sert a koi alors ca:
 

Citation :

fflush(stdin);  
getchar();



ca sert à rien.
 
fflush(outstream) permetde flusher un flux de sortie, c'est à dire de vider son buffer, c'est à dire de terminer toutes les opérations d'écritures en attente de réallisation. ca n'a aucun sens sur un flux d'entrée.
 
getchar() permet de lire un caractere


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 22:29:36    

Taz@PPC a écrit :

ca n'a aucun sens sur un flux d'entrée.


 
:heink: bhen si, ça vire ce qui est dans le buffer d'entrée
genre l'utilisateur appuie comme un boolay sur des touches pendant que ton soft fait des calculs, puis tu lui mets le message "appuyez sur une touche pour quitter", si tu vides pas le buffer en entrée bhen ça quittera direct...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 22:31:12    

antp a écrit :


 
:heink: bhen si, ça vire ce qui est dans le buffer d'entrée
genre l'utilisateur appuie comme un boolay sur des touches pendant que ton soft fait des calculs, puis tu lui mets le message "appuyez sur une touche pour quitter", si tu vides pas le buffer en entrée bhen ça quittera direct...

:non: . me demande pas de te citer le K&R s'il teu plé, chui crevé  :sleep:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 22:32:32    

bah oui mais comment t'expliques que ça marche alors :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 22:33:30    

Taz@PPC a écrit :

:non: . me demande pas de te citer le K&R s'il teu plé, chui crevé  :sleep:  


 
quand je l'enleve la fenetre se ferme et quand je le laisse ce n'est pas le cas.

Reply

Marsh Posté le 10-12-2002 à 22:34:08    

antp a écrit :

bah oui mais comment t'expliques que ça marche alors :heink:


 
je confirme ca marche :)

Reply

Marsh Posté le 10-12-2002 à 22:35:05    

c'est le getchar qui fait effet et pas fflush. si effectivement le buffer de stdin est plein, alors le getchar final est sauté (c'est à dire t'as tapé trop / pas tout lu lors de ta derniere entrée)


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 22:36:30    

forummp3 a écrit :


 
je confirme ca marche :)

c'est un comportement indéfini: ca peut marcher et pas marcher. :non:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 22:36:56    

Taz@PPC a écrit :

c'est le getchar qui fait effet et pas fflush. si effectivement le buffer de stdin est plein, alors le getchar final est sauté (c'est à dire t'as tapé trop / pas tout lu lors de ta derniere entrée)


 
j'suis debutant et g pas tout compris dans ce que tu as dit  :whistle:

Reply

Marsh Posté le 10-12-2002 à 22:40:15    

si tu as tres bien compirs: lance ton exe dans une fenetre DOS!
 
 
l'entrée standard est muni d'un buffer: quand tu tapes un truc, ca passe par ce buffer et ton processus lis dans ce buffer. si tu tapes plus que ton processus de vas lire: à la fin de lecture de ton processus, il reste des caractères non-encore lus dans le buffer


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 22:41:57    

Taz@PPC a écrit :

si tu as tres bien compirs: lance ton exe dans une fenetre DOS!
 
 
l'entrée standard est muni d'un buffer: quand tu tapes un truc, ca passe par ce buffer et ton processus lis dans ce buffer. si tu tapes plus que ton processus de vas lire: à la fin de lecture de ton processus, il reste des caractères non-encore lus dans le buffer


 
ha ok,mais a chaque fois je ne tape qu'une seul fois et la fenetre ce ferme quand meme.

Reply

Marsh Posté le 10-12-2002 à 22:54:09    

parce qu'il reste un \n dans ton buffer. fais scanf("%f\n" ) par exempleou alors fait un while(getchar()!=EOF);


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:00:07    

j'ai refait un autre code et si on enleve une des deux ligne que vous m'avez donner he bien ca se ferme quand meme:
 

Citation :

#include<stdio.h>
char num[20];
void main()
{
printf("entre un prenom: \n" );
scanf("%s",&num);
printf("ton prenom est %s",num);
fflush(stdin);  
getchar();

}
 

Reply

Marsh Posté le 10-12-2002 à 23:04:37    

1) ces deux lignes sont fausses.
2) ton programme ne marche pas car il plante: c'est scanf("%s", nom);
 
et si tu veux vraiment pas lancer ton programme dans une console DOS, mets un system("PAUSE" ); à la fin et c'est tout !!!!


Message édité par Taz@PPC le 10-12-2002 à 23:06:15

---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:06:28    

Taz@PPC a écrit :


l'entrée standard est muni d'un buffer: quand tu tapes un truc, ca passe par ce buffer et ton processus lis dans ce buffer. si tu tapes plus que ton processus de vas lire: à la fin de lecture de ton processus, il reste des caractères non-encore lus dans le buffer


 
et le fflush ne permet pas de vider ce buffer ? :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 23:07:44    

antp a écrit :


 
et le fflush ne permet pas de vider ce buffer ? :heink:

sur un flux d'entrée, ca n'a sémantiquement pas de sens et c'est indéfini en C


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:09:27    

bah je ne demande qu'à te croire mais bon j'ai jamais rien vu qui disait ça [:mlc]
 
et je n'avais encore vu personne que fflush(stdin) choquait...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 23:11:12    

Taz@PPC a écrit :

1) ces deux lignes sont fausses.
2) ton programme ne marche pas car il plante: c'est scanf("%s", nom);
 
et si tu veux vraiment pas lancer ton programme dans une console DOS, mets un system("PAUSE" ); à la fin et c'est tout !!!!


 
il plante pas puisque j'ai mis num partout et non nom
c pas tres logiques mais j'ai fait que reprendre l'ancien code.

Reply

Marsh Posté le 10-12-2002 à 23:12:16    

rhaaaaaaaaaaaaaaaaa. depuis quand tu fais du C :sarcastic:  
 
 
K&R p.246 annexe B1.1
 

int fflush(FILE *stream)
Sur un flot de sortie, fflush provoque l'écriture des données mises en mémoire tampon; sur un flot d'entrée, son effet est indéfini. Elle retourne EOF pour une erreur d'écriture, zéro sinon.


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:12:24    

forummp3 a écrit :


 
il plante pas puisque j'ai mis num partout et non nom
c pas tres logiques mais j'ai fait que reprendre l'ancien code.


 
il voulait dire que tu devais pas mettre le "&" devant la variable si c'est une chaîne que tu lis, vu qu'une chaîne (tableau de caractères) est déjà un pointeur.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 23:13:19    

Taz@PPC a écrit :

rhaaaaaaaaaaaaaaaaa. depuis quand tu fais du C :sarcastic:  
 


 
j'ai fait du C sur mainframe puis c'est tout :D chuis directement passé au C++ sur PC :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 23:14:01    

forummp3 a écrit :


 
il plante pas puisque j'ai mis num partout et non nom
c pas tres logiques mais j'ai fait que reprendre l'ancien code.

putain je te parle pas de ca bordel, le nom je m'en fou. achete toi un bouquin correct de C et fait scanf("%s", my_fucken_dummy_char_tab) et pas scanf("%s", &my_another_ucken_dummy_char_tab);


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:14:26    

antp a écrit :


 
il voulait dire que tu devais pas mettre le "&" devant la variable si c'est une chaîne que tu lis, vu qu'une chaîne (tableau de caractères) est déjà un pointeur.

et un tableau n'est pas un pointeur


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:17:16    

Taz@PPC a écrit :

et un tableau n'est pas un pointeur


 
je voulais dire que la variable "tableau" contient l'adresse du premier élément, comme un pointeur
 
non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-12-2002 à 23:17:51    

Taz@PPC a écrit :

putain je te parle pas de ca bordel, le nom je m'en fou. achete toi un bouquin correct de C et fait scanf("%s", my_fucken_dummy_char_tab) et pas scanf("%s", &my_another_ucken_dummy_char_tab);


 
avec ou sans le & ca plante pas  :??:

Reply

Marsh Posté le 10-12-2002 à 23:18:22    

antp a écrit :


 
je voulais dire que la variable "tableau" contient l'adresse du premier élément, comme un pointeur
 
non ?

c'est ça, rattrape toi aux branches. effectivement


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:19:20    

forummp3 a écrit :


 
avec ou sans le & ca plante pas  :??:  

note pour plus tard: offrir un livre de francais pour noel a forummp3


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 10-12-2002 à 23:19:54    

Taz@PPC a écrit :

c'est ça, rattrape toi aux branches. effectivement


 
bhen c'est pareil :heink:  
char tableau[10] et char *tableau, dans les deux cas tableau contient une adresse mémoire, non :??:...  
enfin moi c'est ce que j'appelle "pointeur", désolé d'avoir de t'avoir heurté en utilisant le mauvais terme :sarcastic:


Message édité par antp le 10-12-2002 à 23:20:35

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed