C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Pause dans un prog

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Pascal
Guest





PostPosted: Tue Feb 08, 2005 9:40 pm    Post subject: Pause dans un prog Reply with quote



Bonjour,

Eternel problème : comment faire pour faire une pause dans un programme?
Je dois afficher un message d'erreur à l'utilisateur, puis qu'il
appuie sur entrer pour repasser sur le menu principal.
Back to top
Fabien LE LEZ
Guest





PostPosted: Tue Feb 08, 2005 9:51 pm    Post subject: Re: Pause dans un prog Reply with quote



On Tue, 08 Feb 2005 22:40:52 +0100, Pascal <pascal (AT) spam (DOT) org>:

Quote:
Eternel problème : comment faire pour faire une pause dans un programme?

Deux voies :
- (n)curses pour une vraie interface en ligne de commande
- version portable :
string ligne_bidon;
getline (cin, ligne_bidon);


--
;-)

Back to top
noone@nowhere.com
Guest





PostPosted: Wed Feb 09, 2005 9:39 am    Post subject: Re: Pause dans un prog Reply with quote



Fabien LE LEZ wrote:
Quote:
On Tue, 08 Feb 2005 22:40:52 +0100, Pascal <pascal (AT) spam (DOT) org>:


Eternel problème : comment faire pour faire une pause dans un programme?


Deux voies :
- (n)curses pour une vraie interface en ligne de commande
- version portable :
string ligne_bidon;
getline (cin, ligne_bidon);



et la mauvaise méthode

system("pause");
(je me demande si DevC++ ne fait pas un truc comme ça par défaut comme
projet console... à confirmer)

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Feb 09, 2005 10:08 am    Post subject: Re: Pause dans un prog Reply with quote

On Wed, 09 Feb 2005 10:39:58 +0100, "noone (AT) nowhere (DOT) com"
<noone (AT) nowhere (DOT) com>:

Quote:
et la mauvaise méthode

system("pause");

Mon dieu mon dieu... Je préfère encore getch().


--
;-)

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Wed Feb 09, 2005 12:10 pm    Post subject: Re: Pause dans un prog Reply with quote

Fabien LE LEZ wrote:
Quote:
On Tue, 08 Feb 2005 22:40:52 +0100, Pascal <pascal (AT) spam (DOT) org>:

Eternel problème : comment faire pour faire une pause dans un
programme?


Quote:
Deux voies :
- (n)curses pour une vraie interface en ligne de commande
- version portable :
string ligne_bidon;
getline (cin, ligne_bidon);

Juste un détail, mais qu'est-ce que tu entends par « ligne de
commande » ? Parce que j'aurais dit, moi, que (n)curses est tout
autre qu'en ligne de commande.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Feb 09, 2005 2:02 pm    Post subject: Re: Pause dans un prog Reply with quote

On 9 Feb 2005 04:10:38 -0800, [email]kanze (AT) gabi-soft (DOT) fr[/email]:

Quote:
qu'est-ce que tu entends par « ligne de
commande » ?

C'est un raccourci pour désigner un mode non-GUI.


--
;-)

Back to top
Pascal
Guest





PostPosted: Wed Feb 09, 2005 2:24 pm    Post subject: Re: Pause dans un prog Reply with quote

On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:

Quote:
string ligne_bidon;
getline (cin, ligne_bidon);

sous linux, ca ne marche pas. Alors j'ai pensé à faire un fflush(null),
mais ça n'a pas marché.

Back to top
Pascal
Guest





PostPosted: Wed Feb 09, 2005 4:32 pm    Post subject: Re: Pause dans un prog Reply with quote

On Wed, 09 Feb 2005 11:08:09 +0100, Fabien LE LEZ wrote:

Quote:
Mon dieu mon dieu... Je préfère encore getch().

Pour utiliser getch() sous linux, il faut bien inclure <curses.h>?
J'ai fait ça, mais ça ne marche pas non plus.

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Thu Feb 10, 2005 9:13 am    Post subject: Re: Pause dans un prog Reply with quote

Pascal wrote:
Quote:
On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:

string ligne_bidon;
getline (cin, ligne_bidon);

sous linux, ca ne marche pas. Alors j'ai pensé à faire un
fflush(null), mais ça n'a pas marché.

Sous Linux, ça marche comme partout ailleurs, mais il faut voir
ce que tu as fais avant. Il se peut qu'il y a une erreur avant
qui ne se manifeste qu'ici, ou que tu n'as pas pensé à lire
toute la ligne avant, ce qui fait q'il y a encore une (partie
de) ligne dans le buffer. Et évidemment, si tu utilises quelque
chose du genre curses, qui a changé le mode des entrées clavier,
ça risque de ne pas marcher non plus.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
Alexandre
Guest





PostPosted: Thu Feb 10, 2005 1:48 pm    Post subject: Re: Pause dans un prog Reply with quote


"Pascal" <teapa5 (AT) B022-05 (DOT) fr> a écrit dans le message de news:
[email]pan.2005.02.09.14.24.50.409495 (AT) B022-05 (DOT) fr[/email]...
Quote:
On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:

string ligne_bidon;
getline (cin, ligne_bidon);

sous linux, ca ne marche pas. Alors j'ai pensé à faire un fflush(null),
mais ça n'a pas marché.

si tu veux vider le buffer d'entrée je ferais plutôt
cin.sync() ;
avant.



Back to top
Pascal
Guest





PostPosted: Thu Feb 10, 2005 2:42 pm    Post subject: Re: Pause dans un prog Reply with quote

On Thu, 10 Feb 2005 01:13:39 -0800, kanz wrote:

Quote:
Sous Linux, ça marche comme partout ailleurs, mais il faut voir
ce que tu as fais avant. Il se peut qu'il y a une erreur avant
qui ne se manifeste qu'ici, ou que tu n'as pas pensé à lire
toute la ligne avant, ce qui fait q'il y a encore une (partie
de) ligne dans le buffer. Et évidemment, si tu utilises quelque
chose du genre curses, qui a changé le mode des entrées clavier,
ça risque de ne pas marcher non plus.

Dans ce cas, je ne comprends pas pourquoi ça ne marche pas. Je ne touche pas au ncurses. Tout ce que
je fais, c'est afficher un message avant.

Back to top
drkm
Guest





PostPosted: Thu Feb 10, 2005 5:41 pm    Post subject: Re: Pause dans un prog Reply with quote

Pascal <teapa5 (AT) B022-05 (DOT) fr> writes:

Quote:
On Thu, 10 Feb 2005 01:13:39 -0800, kanz wrote:

Sous Linux, ça marche comme partout ailleurs, mais il faut voir
ce que tu as fais avant. Il se peut qu'il y a une erreur avant
qui ne se manifeste qu'ici, ou que tu n'as pas pensé à lire
toute la ligne avant, ce qui fait q'il y a encore une (partie
de) ligne dans le buffer. Et évidemment, si tu utilises quelque
chose du genre curses, qui a changé le mode des entrées clavier,
ça risque de ne pas marcher non plus.

Dans ce cas, je ne comprends pas pourquoi ça ne marche pas. Je ne touche pas au ncurses. Tout ce que
je fais, c'est afficher un message avant.

Es-tu sûr de ce qui se trouve dans ton flux d'entrée ?

--drkm

Back to top
Pascal
Guest





PostPosted: Thu Feb 10, 2005 8:11 pm    Post subject: Re: Pause dans un prog Reply with quote

drkm wrote:
Quote:
Es-tu sûr de ce qui se trouve dans ton flux d'entrée ?

A part avoir fait cout << "machin", y a rien d'autre. Peut être parce
que je mets 2 "n", mais dans ce cas, le fflush(NULL) aurait dû tout
supprimer.
--
Pascal

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Fri Feb 11, 2005 8:04 am    Post subject: Re: Pause dans un prog Reply with quote

Pascal wrote:
Quote:
drkm wrote:
Es-tu sûr de ce qui se trouve dans ton flux d'entrée ?

A part avoir fait cout << "machin", y a rien d'autre. Peut
être parce que je mets 2 "n", mais dans ce cas, le
fflush(NULL) aurait dû tout supprimer.

Je ne suis pas sûr de comprendre. Tu sembles mélanger les
entrées et les sorties.

Il s'agit ici des entrées. Donc, le « cout << ... » et le
« fflush » n'ont aucun effet -- ils ne sont définis que sur des
flux de sortie (et évidemment, fflush n'a aucun effet sur les
flux C++ en général).

La question est plutôt : est-ce que tu as fais des entrées
avant, et comment ? Si tu as fais des entrées partielles, il est
possible, voire probable, qu'il te reste une partie de la ligne
lue avant dans le buffer de cin. Dans ce cas-là, getline
retourne tout de suite avec cette reste de ligne.

En général (mais ce n'est qu'un avis personnel), je le trouve
mieux d'éviter de mélanger les types d'entrées. Si les entrées
sont orientées ligne (ce qui est normalement le cas pour cin),
on lit au moyen de getline, et uniquement au moyen de getline.
Pour découper et analyser plus finement, on se sert de
istringstream. Il y a des exceptions, mais dans le cas
d'exception, il faut quand même bien avancer jusqu'à la fin de
ligne quand on a fini.

Enfin, un peu à part : quel est l'intérêt de cette procedure ?
Les seuls cas que je connais où on veut se bloquait jusqu'une
entrée utilisateur, ce sont les outils du genre more ou pg, et
typiquement, ils gèrent les entrées d'une façon spéciale afin
d'offir des possibilités en plus. (Je crois, par exemple, que le
less de GNU utilise getline.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
James Kanze
Guest





PostPosted: Sun Feb 13, 2005 9:33 pm    Post subject: Re: Pause dans un prog Reply with quote

Alexandre wrote:
Quote:
"Pascal" <teapa5 (AT) B022-05 (DOT) fr> a écrit dans le message de news:
[email]pan.2005.02.09.14.24.50.409495 (AT) B022-05 (DOT) fr[/email]...

On Tue, 08 Feb 2005 22:51:18 +0100, Fabien LE LEZ wrote:

string ligne_bidon;
getline (cin, ligne_bidon);

sous linux, ca ne marche pas. Alors j'ai pensé à faire un
fflush(null), mais ça n'a pas marché.

si tu veux vider le buffer d'entrée je ferais plutôt
cin.sync() ;
avant.

Fonctionne qui n'existe pas.

--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.