Metti in pausa un programma in C++
-
Usa la funzione
getc()
per mettere in pausa il programma -
Usa il metodo
std::cin::get()
per mettere in pausa il programma -
Usa la funzione
getchar()
per mettere in pausa il programma
Questo articolo spiegherà diversi metodi su come mettere in pausa un programma in C++.
Usa la funzione getc()
per mettere in pausa il programma
La funzione getc()
proviene dalla libreria di input-output standard C e legge il carattere successivo dal flusso di input specificato. Il flusso di input è di tipo FILE*
e la funzione si aspetta che il flusso venga aperto. Su quasi tutti i sistemi Unix, durante l’avvio del programma, vengono aperti 3 flussi di file standard - vale a dire: stdin
, stdout
e stderr
. Nell’esempio seguente, passiamo stdin
come argomento, che corrisponde a un input della console, per attendere che un utente continui l’esecuzione del programma.
#include <chrono>
#include <iostream>
#include <thread>
using std::copy;
using std::cout;
using std::endl;
using std::this_thread::sleep_for;
using namespace std::chrono_literals;
int main() {
int flag;
cout << "Program is paused !\n"
<< "Press Enter to continue\n";
// pause the program until user input
flag = getc(stdin);
cout << "\nContinuing .";
sleep_for(300ms);
cout << ".";
cout << ".";
cout << ".";
cout << "\nProgram finished with success code!";
return EXIT_SUCCESS;
}
Produzione:
Program is paused !
Press Enter to continue
Continuing ....
Program finished with success code!
Usa il metodo std::cin::get()
per mettere in pausa il programma
Un altro metodo per mettere in pausa un programma è chiamare il metodo integrato std::cin
get
, che estrae i caratteri dal flusso di input come specificato dai parametri. In questo caso, leggiamo solo un singolo carattere e restituiamo il controllo al programma in esecuzione.
#include <chrono>
#include <iostream>
#include <thread>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
using std::this_thread::sleep_for;
using namespace std::chrono_literals;
int main() {
int flag;
cout << "Program is paused !\n"
<< "Press Enter to continue\n";
// pause the program until user input
flag = cin.get();
cout << "\nContinuing .";
sleep_for(300ms);
cout << ".";
cout << ".";
cout << ".";
cout << "\nProgram finished with success code!";
return EXIT_SUCCESS;
}
Usa la funzione getchar()
per mettere in pausa il programma
In alternativa, possiamo reimplementare la stessa funzionalità con la chiamata alla funzione getchar
. getchar
è la chiamata equivalente a getc(stdin)
, che legge il carattere successivo dal flusso di input della console.
Notare che entrambe le funzioni possono restituire EOF
, indicando che è stata raggiunta la fine del file, ovvero non sono disponibili caratteri da leggere. Il programmatore è responsabile della gestione di qualsiasi flusso di controllo eccezionale e dei codici di errore restituiti.
#include <chrono>
#include <iostream>
#include <thread>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
using std::this_thread::sleep_for;
using namespace std::chrono_literals;
int main() {
int flag;
cout << "Program is paused !\n"
<< "Press Enter to continue\n";
// pause the program until user input
flag = getchar();
cout << "\nContinuing .";
sleep_for(300ms);
cout << ".";
cout << ".";
cout << ".";
cout << "\nProgram finished with success code!";
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook