Comment mettre en pause un programme en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la fonction getc() pour mettre le programme en pause
  2. Utilisez la méthode std::cin::get() pour mettre le programme en pause
  3. Utilisez la fonction getchar() pour mettre le programme en pause
Comment mettre en pause un programme en C++

Cet article explique plusieurs méthodes pour mettre en pause un programme en C++.

Utilisez la fonction getc() pour mettre le programme en pause

La fonction getc() provient de la bibliothèque d’entrée-sortie standard du C, et elle lit le caractère suivant du flux d’entrée donné. Le flux d’entrée est de type FILE*, et la fonction s’attend à ce que le flux soit ouvert. Sur presque tous les systèmes Unix, lors du démarrage du programme, 3 flux de fichiers standard sont ouverts - à savoir stdin, stdout et stderr. Dans l’exemple suivant, nous passons stdin en argument, qui correspond à une entrée de la console, pour attendre qu’un utilisateur continue l’exécution du programme.

#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;
}

Production:

Program is paused !
Press Enter to continue

Continuing ....
Program finished with success code!

Utilisez la méthode std::cin::get() pour mettre le programme en pause

Une autre méthode pour mettre un programme en pause est d’appeler la méthode intégrée std::cin get, qui extrait les caractères du flux d’entrée comme spécifié par des paramètres. Dans ce cas, on se contente de lire un seul caractère et de renvoyer le contrôle au programme en cours d’exécution.

#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;
}

Utilisez la fonction getchar() pour mettre le programme en pause

On peut aussi réimplémenter la même fonctionnalité avec l’appel de fonction getchar. getchar est l’équivalent de getc(stdin), qui lit le caractère suivant du flux d’entrée de la console.

Notez que les deux fonctions peuvent renvoyer EOF, indiquant que la fin du fichier a été atteinte, c’est-à-dire qu’aucun caractère n’est disponible pour la lecture. Le programmeur est responsable du traitement de tout flux de contrôle exceptionnel et des codes d’erreur renvoyés.

#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;
}
Auteur: 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