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:
getchar(); getchar();
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.
[1] Comentário enviado por eldermarco em 26/05/2012 - 09:05h
Bom, você não precisa realmente usar o system("pause") no Windows se executar o programa a partir do prompt ou usar uma IDE que leve isso em consideração (como o Code::Blocks). Além do que, a solução apresentada por você me parece uma má prática. Você não precisa usar nenhuma variável PAUSE. Simplesmente faça:
#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. :)