System("pause");

1. System("pause");

Rafael Victor de Almeida Schiavo
Rafael.Schiavo

(usa Ubuntu)

Enviado em 28/08/2009 - 21:00h

Boa Noite a todos,
Estou começando a usar o c++ no linux, uso o Ubuntu 8.10(Intrepid ibex).

Para testar o meu gcc, fiz o seguinte código:

#include <stdio.h>
int main() {
printf("Hello World!");
system("pause");
}

Então executo o seguinte comando no terminal: gcc teste.c -o teste

Acontece que o gcc compila muito rápido, e eu não consigo ver o Hello World!

Existe o system("pause") no gcc?

Muito Obrigado.



  


2. Re: System("pause");

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/08/2009 - 21:03h

Correto seria assim:
system("PAUSE");
return EXIT_SUCCESS;



3. Re: System("pause");

Rafael Victor de Almeida Schiavo
Rafael.Schiavo

(usa Ubuntu)

Enviado em 28/08/2009 - 21:22h

ilsahec,
Obrigado pela resposta, mas ainda não deu certo.

Eu devo ta fazendo alguma burrada(sou novato em linux).

Alterei o código, conforme vc me orientou.

#include <stdio.h>
int main() {
printf("Hello World!");
system("PAUSE");
return EXIT_SUCCESS;
}

Agora aparece os seguintes erros:

[email protected]:~/Documentos/TesteGCC$ gcc teste.c -o teste
teste.c: In function ‘main’:
teste.c:5: error: ‘EXIT_SUCCESS’ undeclared (first use in this function)
teste.c:5: error: (Each undeclared identifier is reported only once
teste.c:5: error: for each function it appears in.)
[email protected]:~/Documentos/TesteGCC$

Mais uma vez Obrigado.





4. Bom, vamos la...

André
andrezc

(usa Debian)

Enviado em 28/08/2009 - 21:45h

O system("pause"); depende da biblioteca stdlib.h, sem ela você não vai conseguir rodar, outra coisa o system("pause"); pode lhe trazer falhas de segurança em seu softare, sem falar que ele chama outro programa para pausa-lo, ou seja, pode ser considerado "gambiarra" o uso de um system("pause");

É muito melhor fazer o uso de uma função getchar(); que não requer nenhuma biblioteca extra a não ser a stdio.h ( padrão do C )

exemplo :

#include <stdio.h>

int main(void)
{
/****/printf("Ola, vivaolinux!\n");
/****/printf("Pressione ENTER \n");
/****/getchar();
/****/return 0;
}


5. Outra coisa...

André
andrezc

(usa Debian)

Enviado em 28/08/2009 - 21:47h

Procure dar uma lida na documentação de bibliotecas como stdio.h, ctype.h , string.h ...

Eu ja postei uma dica falando das funções das principais bibliotecas tanto do C quanto do C++

Aqui esta o link da minha dica : http://www.vivaolinux.com.br/dica/Funcao-das-principais-bibliotecas-do-C++/


6. System("pause")

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

Enviado em 28/08/2009 - 22:53h

Oi,

Não vejo nenhum problema em seu programa, exceto que faltou o return da função int main:
Algo como

#include <stdio>
int main()
{
system("cls");
printf("Oi, mundo!);
system("pause");
return 0;
}

funciona normalmente.
Para ver o resultado você tem que digitar no prompt:
./nome_do_seu_programa

ele deve rodar normalmente e você verá a mensagem na tela.
Grato,

Luiz
http://twitter.com/lcmoura


7. system("pause")

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

Enviado em 28/08/2009 - 23:40h

Oi,

Algumas correções:
1 - esqueci do .h em <stdio.h>
2 - esqueci de fechar as aspas dentro do printf
3 - o cls, o clear e o pause são para DOS....no Linux, para o lugar do system("pause") é adequado o uso de getchar()

Abraço,
Luiz
http://twitter.com/lcmoura


8. Re: System("pause");

Elder Marco
eldermarco

(usa Fedora)

Enviado em 28/08/2009 - 23:58h

A função system() serve para você chamar algum programa do terminal, um comando externo. Um exemplo seria system("ls") e ele listaria o conteúdo do diretório corrente porque chamaria o comando ls no seu sistema. No Windows, quando você escreve um programa e gera um .exe e clica sobre ele, todos aqueles códigos serão executados e quando encontrar o final da função principal ( main() ) ela termina e o programa fecha. Então, seria uma boa idéia colocar um comando que fizesse ele parar bem no exato momento em que ela estivesse pra fechar. Na verdade, a última parada antes de retornar e a janela com aquela tela preta fechar. Quando você executasse esse comando, apareceria na tela -- usando o Windows -- "Pressione uma tecla qualquer para continuar..." e então você pressiona e ele fecha. Você poderia abrir um prompt e digitar "pause" nele que essa mensagem também iria aparecer.

Agora pense, não tem um comando 'pause' que venha com o Linux. E você executa esse programa pelo terminal e quando o programa fechar, não irá fechar o terminal junto, de modo que você poderá ver a saída, no caso "Hello World!". Então, qual o motivo para usar a função system() nesse caso? E system("pause") daria mesmo errado e o bash iria acusar que o comando pause não foi encontrado. Mais do que isso, a função system() está definidade em <stdlib.h> e você precisa inserir essa biblioteca para usar ela.
Ela pode ser útil em outros momentos, mas não esse. Assim, você pode tirar essa linha do seu programa deixando assim:

#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}

Agora sim vai! Se você quiser parar o programa antes, use um comando que te permita ler alguma coisa do teclado. Um caractere, por exemplo, como disse o amigo ali em cima.


9. Re: System("pause");

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/08/2009 - 03:10h

Primeiramente, gostaria de esclarecer que o 'pause' em si é comando do Windows, ou melhor, nativo do DOS.
Em ambiente UNIX você tem a alternativa de usar o 'read variavel'.

void getch(void) {

system("read qualquer_variavel_aqui");

}

Agora só chamar a função getch() que você "criou".
Abraço.


10. Re: System("pause");

André
andrezc

(usa Debian)

Enviado em 29/08/2009 - 06:57h

System("pause"); = gambiarra
Getchar(); + scanf("c\n"); = programar sem bugs !


11. Re: System("pause");

José Alberto Lobo Junior
wolfast

(usa Ubuntu)

Enviado em 29/08/2009 - 10:08h

O unico problema q eu eu vejo nesse seu programa e a falta do return 0 e a inclusao da cstdlib.

#include <cstdlib> //aki
#include <stdio.h>
int main() {
printf("Hello World!");
system("pause");
return 0; //e aki
}


12. Resolvido

Rafael Victor de Almeida Schiavo
rafael.schiavo

(usa Ubuntu)

Enviado em 06/09/2009 - 19:01h

Obrigado a todos, consegui resolver.

Eu resolvi da seguinte forma:
Usei o getchar(), conforme vcs me instruiram, mas mesmo assim eu não conseguia ler o Hello World!
O programa continuava sendo executado muito rápido.
Então lembrei que, para executar algum programa eu tenho que colocar um ./NomeDoPrograma, mas mesmo assim não dava certo.
Coloquei permissão 777 no diretório que está armazenado o programa, depois disso deu certo.

Resumindo:
1)Usei getchar()
2)Alterei permissão de acesso ao diretório
3)usei ./ para executar o programa.

Obrigado.