Si tu essaies les commandes de l'invite de commande DOS, est ce qu'il font des pauses après leurs exécutions ?
Est ce que ping te demande d'appuyer sur une touche pour reprendre la main ?
Est ce que dir te demande d'appuyer sur une touche pour reprendre la main ?
...
Bah non.
Il n'y a que "pause" qui fait une pause.
Les programmes console sont faits pour être exécutés dans une invite de commande.
Si on les lances directement, ils s'exécutent tellement vite que l'on ne voit pas le résultat (Ce qui est un comportement normal).
Et soit dit en passant, faire une belle pause, ce n'est pas évident.
En effet, system("pause"); est très peu pratique.
D'une part la commande C "system" est une usine à gaz : elle lance une nouvelle instance de cmd.exe pour lui faire exécuter la commande passée en argument.
D'autre part ce n'est pas portable car la commande "pause" n'existe pas sous linux.
Faire un scanf est chiant à l'usage car il faut appuyer sur "Entrée".
Il n'y a pas de solution portable...
Par exemple, pour windows, une solution un peu propre est la suivante :
void __stdcall Console_Pause()
{
HANDLE hInput; /* Handle de l'entrée standard */
DWORD nRead; /* Nombre d'octets lus */
TCHAR buffer; /* Réception du caractère */
DWORD nOldMode; /* Sauvegarde le mode précédent pour le restituer */
hInput = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hInput, &nOldMode);
SetConsoleMode(hInput, 0);
ReadConsole(hInput, &buffer, 1, &nRead, NULL);
SetConsoleMode(hInput, nOldMode);
}
Mais ça ne fonctionnera pas sous linux.
On peut aussi passer par getch de conio.h.
Mais conio.h n'est pas un header standard : aucune garantit qu'il soit disponible.
Bilan, pour faire une pause portable, il faudrait utiliser le code windows ci-dessus, trouver un code linux, et faire un ifdef pour utiliser l'un ou l'autre.
Conclusion, une pause c'est lourd à coder, et en plus ça gène l'utilisateur lorsqu'il utilise ton application.
Mais revenons à nos moutons...
Ton problème est que tu travailles dans un environement de dev, par exemple Visual Studio.
Cet environement démarre directement l'application console sans mettre de pause à la fin.
(Si tu compilais en invite de commande, tu n'aurais pas ce problème).
Déjà, Visual ou un autre permet de lancer le .exe tout en ajoutant une pause à la fin.
Sous VC6, par défaut, c'est ctrl+F5 (Execute Xxxx.exe).
Et si on est en debug, suffit de se mettre sur la dernière instruction (Le return du main en général) et placer un point d'arrêt (F9 sou VC6).
Ensuite F5 pour lancer le débogage.