system("pause") para Linux
Dica publicada em C/C++ / Miscelânea
system("pause") para Linux
Estou começando a programar em C, mas os programas que eu escrevo no Windows não funcionam no Linux,
pois o comando system("pause") não funciona em Linux, visto que no Linux não existe o comando
pause.
Para resolver este problema, eu utilizo os métodos abaixo:
Lê o caractere que o usuário digitar, depois "tira o enter do buffer".
Verifica se o programa está sendo executado em Windows, se sim, a variável PAUSE vale 1, caso contrario vale 0. Depois, no fim do programa, se PAUSE for 1, faz a pausa do Windows, caso contrário, faz a pausa para Linux.
Se alguém mais experiente tiver uma solução diferente, por favor poste aqui, até por que este assunto é bastante útil para estudantes que utilizam Linux.
Até mais!
Para resolver este problema, eu utilizo os métodos abaixo:
getchar(); getchar();
Lê o caractere que o usuário digitar, depois "tira o enter do buffer".
#ifdef WIN32
#define PAUSE 1
#else
#define PAUSE 0
#endif
[...código...]
if(PAUSE==1)
system("pause");
else
system("read -p \"Pressione enter para sair\" saindo");
return(0);
#define PAUSE 1
#else
#define PAUSE 0
#endif
[...código...]
if(PAUSE==1)
system("pause");
else
system("read -p \"Pressione enter para sair\" saindo");
return(0);
Verifica se o programa está sendo executado em Windows, se sim, a variável PAUSE vale 1, caso contrario vale 0. Depois, no fim do programa, se PAUSE for 1, faz a pausa do Windows, caso contrário, faz a pausa para Linux.
Se alguém mais experiente tiver uma solução diferente, por favor poste aqui, até por que este assunto é bastante útil para estudantes que utilizam Linux.
Até mais!
#ifdef WIN32
system ("pause");
#endif
no lugar de colocar somente a função. Simples assim. Isso fará com que a função system ("pause") seja compilada junto com o código somente se você estiver no Windows. O pré-processador se encarregará de tirar ela, caso isso não seja verdade. :)