Metti in pausa un programma in C++

Jinku Hu 12 ottobre 2023
  1. Usa la funzione getc() per mettere in pausa il programma
  2. Usa il metodo std::cin::get() per mettere in pausa il programma
  3. Usa la funzione getchar() per mettere in pausa il programma
Metti in pausa un programma in C++

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;
}
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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