come mettre la pausa alla fine di un programma in c++, evitando system(pasue);
mi ricordo che c'entra qualcosa tipo
cin.get
cin.ignore
ma siccome ho formattato il pc e ho cancellato tutto, non mi ricordo più, grazie comunque
come mettre la pausa alla fine di un programma in c++, evitando system(pasue);
mi ricordo che c'entra qualcosa tipo
cin.get
cin.ignore
ma siccome ho formattato il pc e ho cancellato tutto, non mi ricordo più, grazie comunque
Fai bene a evitare il System Pause, usa la getchar()Originariamente inviato da DiegoFilippo
come mettre la pausa alla fine di un programma in c++, evitando system(pasue);
mi ricordo che c'entra qualcosa tipo
cin.get
cin.ignore
ma siccome ho formattato il pc e ho cancellato tutto, non mi ricordo più, grazie comunque
Ciao
puoi mettermi il codice completo, sai sono ancora agli inizi, altrimenti fa niente
Perchè dici di evitare il system pause? Per informazione eh intendiamoci
Originariamente inviato da DiegoFilippo
puoi mettermi il codice completo, sai sono ancora agli inizi, altrimenti fa nientecodice://tuo codice getchar(); //qui si ha la pausa e il flusso del programma //riprende con la pressione di un tasto //tuo codiceA chi ti riferisci, a me o a DiegoFilippo?Originariamente inviato da BabboNapoli
Perchè dici di evitare il system pause? Per informazione eh intendiamoci
Perché non puoi essere sicuro di cosa fa esattamente. Lo standard prescrive che la system passi il tuo comando ad un interprete dei comandi, di cui non sai niente. Su Windows sarà - probabilmente - cmd.exe (quale versione? a seconda cambiano diverse funzionalità) o command.com (di nuovo, quale versione?), su Linux/Unix in genere sarà sh (quale versione?) ma - per quanto riguarda lo standard C++ - nulla impedisce che sia bash, ksh tcsh o chissà quale altra shell. Quello che funziona sulla shell che hai su questa particolare versione di Windows non è detto che funzioni con una versione più vecchia o più nuova, figuriamoci poi su Linux o altri sistemi operativi (esempio facile: su Linux se provi ad inserire il classico PAUSE in sh ottieni:Originariamente inviato da BabboNapoli
Perchè dici di evitare il system pause? Per informazione eh intendiamoci
).codice:$ pause sh: pause: not found
Per farla breve: non hai nessuna garanzia su come verrà interpretato il tuo comando.
Inoltre, non hai nessun codice di ritorno standard che ti dice se il comando è stato eseguito con successo: lo standard non dice niente a proposito, per cui si naviga ancora nell'unspecified behavior.
Tra l'altro richiamare system per fare queste piccole operazioni è uno spreco anche dal punto di vista delle risorse, dato che vai ad avviare un nuovo processo per fare un'operazione che potresti fare direttamente da dentro il tuo programma, a costo infinitesimo. Oltre al costo del nuovo processo (che nella maggioranza dei casi è molto ridotto) l'avvio di un nuovo processo da parte di un programma sconosciuto è spesso causa di avvertimenti da parte di suite di sicurezza, motivo in più per evitare la system.
Alcuni poi usano system per avviare altri processi - pessima idea, su cui ho scritto un'altra risposta.
Amaro C++, il gusto pieno dell'undefined behavior.
Mi aggancio alla risposta di MItaly per completarla, in modo tale che in futuro posteremo direttamente il link a questa discussione per spiegare l'errato utilizzo di tale instruzione:
1. come già ampiamente dimostrato da MItaly, non è un'istruzione portabile
2. spreca risorse di memoria:
a. sospende il programma
b. chiama il sistema operativo
c. apre una shell
d. il SO deve "trovare" il comando PAUSE
e. allocazione di memoria per il comando
f. esecuzione del comando e attesa per la pressione di un tasto
g. deallocazione della memoria
h. uscita dalla shell
i. ritorno al tuo programma
3. inclusione header stdlib.h o cstdlib probabilmente non necessario al tuo programma
Ecco 3 buoni motivi per non usare tale istruzione..
Ciao
Ottimo lavoro; ero sempre in difficoltà nel trovare una discussione da linkare in cui si enumerassero in maniera esauriente i motivi per cui system va evitata, ora siamo a posto. Ben fatto.Originariamente inviato da MdE2005
Mi aggancio alla risposta di MItaly per completarla, in modo tale che in futuro posteremo direttamente il link a questa discussione per spiegare l'errato utilizzo di tale instruzione:
Amaro C++, il gusto pieno dell'undefined behavior.
@mod
Mi vien da pensare che questa discussione potrebbe essere una buona Pillola.
Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
Occhio per occhio uguale... occhio al quadrato
Chissà perché ma devo averli già letti da qualche parte.Originariamente inviato da MdE2005
Ecco 3 buoni motivi per non usare tale istruzione..
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.