Jump to content
Matheusmce

Como parar em algum ponto em C

Recommended Posts

Matheusmce

Sou iniciante em C e ao contrário do Python, o código segue direto e fecha o programa sem você clicar em uma tecla para fechar a execução. Qual seria o comando ou maneira do terminal fechar somente com a vontande do usuário?

Share this post


Link to post
Share on other sites
Localhost

Executas directamente do terminal. Ou então utilizas o getchar.


here since 2009

Share this post


Link to post
Share on other sites
crazygod

faz assim

#include<stdio.h>

int main()
{
    printf("Ola Mundo!  \n");
    getch();
    return 0;
}

se quiseres em vez do getch(), podes usar o

system("pause"); \\ é um comando para o MS-DOS

o getch(); //é mais melhor bom :thumbsup: porque assim depois podes se quiseres compilar o teu código no linux

Espero ter ajudado

Share this post


Link to post
Share on other sites
Localhost

Creio que a função getch não é portável. Não se deve utilizar chamadas ao sistema visto que estas, além de não serem portáveis, são pesadas. A melhor solução será mesmo executar os programas directamente do terminal.


here since 2009

Share this post


Link to post
Share on other sites
Matheusmce

Tentei o getch e não compilou.

Vou mostrar o código pra ver se ajuda.

#include<stdio.h>
int main()
{
int x;
int a;
  x = scanf("Informe um número: \n", a);
  printf(" \n", x);
  return 0;
}

Não tem como usar o executável que rode sem ser pelo terminal?

Share this post


Link to post
Share on other sites
Baderous

Esquece o getch(), essa é uma má sugestão. Usa antes o getchar() no seu lugar.

Share this post


Link to post
Share on other sites
crazygod

peço desculpa pelo o getch, pois queria sim dizer getchar(), foi desleixo meu....

sorry

Share this post


Link to post
Share on other sites
Baderous

Utiliza o system("PAUSE"); no final do código que é mais fácil :)

Já explicaram porque é que não se deve usar isso.

Por vezes é necessário o getchar() 2 vezes.

Isso ocorre caso exista conteúdo no buffer, tens de limpar primeiro.

Share this post


Link to post
Share on other sites
Fred Gomes

Segundo o que percebi da tua questão, tu queres que o programa feche apenas quando tu o desejares certo?, por exemplo, tens uma opção que é 1: sair, apenas caso primas a tecla um é que o programa fecha certo?

isso é simples de fazer, e tens varias opções de o fazer, uma delas é colocares o programa dentro do ciclo (do... while), e colocares dentro desse ciclo uma opção para saires do ciclo apenas quando primes a tecla um , ex: if (sair==1) break; , entendes?

Ps: não tenho a certeza se é isto que pretendes com a tua questão, mas para o caso de não teres percebido o que quiz dizer deixo aqui um exemplo de código...

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a = 0;

    do{
        if (a == 1){
            break;
        }

        printf("\nOlá\n \n\n ");
        printf("\n 0:continuar\n 1:sair\n ");
        scanf("%d",&a);


    }
    while(a == 0);
    system("cls");
    printf("\n\n O programa vai encerrar\n");
}

boa sorte;)

Share this post


Link to post
Share on other sites
KTachyon

Utiliza o system("PAUSE"); no final do código que é mais fácil :)

It's a very expensive and resource heavy function call. It's like using a bulldozer to open your front door. It works, but the key is cleaner, easier, cheaper. What system() does is:

[*]suspend your program

[*]call the operating system

[*]open an operating system shell (relaunches the O/S in a sub-process)

[*]the O/S must now find the PAUSE command

[*]allocate the memory to execute the command

[*]execute the command and wait for a keystroke

[*]deallocate the memory

[*]exit the OS

[*]resume your program

Espero que desmotive a utilização do system("PAUSE")


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
AlexPnt

Existe uma maneira simples e eficaz, que faz uso da função Kbhit(), que basicamente detecta se o utilizador premiu uma tecla ou não, e devolve 0 se não,  não-zero de contrário, logo

    
    ...
    printf("\nPrima qualquer tecla para terminar...");
    
    while(!kbhit()){};

}

Coloquei uma mensagem para ficar mais bonito,

Espero ter ajudado ;)


Programming is an art form that fights back.

Share this post


Link to post
Share on other sites
Baderous

Simples e eficaz mas que não é portável nem standard, logo má solução:

Prototype: int kbhit(void);

Header File: conio.h

Explanation: This function is not defined as part of the ANSI C/C++ standard. It is generally used by Borland's family of compilers. It returns a non-zero integer if a key is in the keyboard buffer. It will not wait for a key to be pressed.

http://www.cprogramming.com/fod/kbhit.html

Share this post


Link to post
Share on other sites
AlexPnt

Realmente é verdade, a opção de usar apenas ansi c no meu IDE estava desactivada, pelo que me passou ao lado. Falha minha. ;)

Mas sendo assim aqui fica uma solução portável e simples,

 


   ...

    printf("\nPrima a tecla enter para terminar...");

    do {
    }while (getchar()!='\n');

}

:cheesygrin:


Programming is an art form that fights back.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.