Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

ibuh

Fecha Consola!

Mensagens Recomendadas

ibuh    0
ibuh

Viva, eu uso o DEV-C++ para compilar, e por exemplo abro o normalmente, abre um novo arquivo fonte, e digito o seguinte código:

#include <stdio.h>

int main ()
{
   int a;
   
   printf ("Digite um número: ");
   scanf ("%d", &a);
   printf ("\nO número digitado foi %d", a); 
   return (0);
}

Funciona bem, só que ao inserir o valor que pede no "scanf" e digito o valor e pressiono <ENTER> e a consola fecha-me o que tenho de fazer?, para que mostre o 2º "printf"?????

obrigado pela atenção e paciência, novatos, penso q sejam assim....;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ibuh    0
ibuh

Pois, já tentei, não dá mesmo não sei porque ;)

Isto assim não dá perde-se o tesão todo de aprender algo :@

lol

Obrigado na mesma;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

Pois, já tentei, não dá mesmo não sei porque ;)

Isto assim não dá perde-se o tesão todo de aprender algo :@

lol

Obrigado na mesma;)

Experimenta lá assim, tem de funcionar.

#include <stdio.h>

int main ()
{
   int a;
   
   printf ("Digite um número: ");
   scanf ("%d", &a);
   printf ("\nO número digitado foi %d", a);

   getchar();

   return (0);
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ibuh    0
ibuh

Viva Triton, então podes é arranjar me um programa que corra no teu pc que contenha um SCANF para eu experimentar no meu ... obrigado!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

O problema é que o getchar() está a ler o \n deixado no buffer de entrada.

Se estás a usar o dev-c existem duas soluções muito comuns, embora só funcionem em windows (não gosto de as recomendar)

Ou

fflush(stdin);
getchar();

ou

system("pause");

Para linux existem alternativas (multi plataforma) mais complicadas para quem está a aprender.

Assim que te sentires mais à vontade a programar C recomendo-te em transformar estas que eu disse numa função criada por ti com os mesmos efeitos mas multi-plataforma.

Nota: fflush(stdin) funciona em linux tal como em windows, mas (e isto já foi discutido noutro tópico) a função fflush não tem o comportamento para buffers de entrada definido. Por acaso faz o que pretendemos tanto em windows como linux, mas nada garante que de uma versão para a outra deixe de fazer, porque simplesmente não está documentado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fpinto    0
fpinto

ou podes sempre usar simples e praticamente assim

#include <stdio.h>
#include <stdlib.h>
main()
{

int i;

printf("mete um numero");
putchar('\n');
scanf(" %d",&i);
printf("o numero que puseste foi: %d",i);

system("PAUSE");
return 0;
}

eu exprimentei no meu pc e funciona.

ps: no teu codigo inicial so aconteceu o que aconteceu porque na tua versao de devc++ o return (0); nao da sem system("PAUSE");

printf ("pelo menus comigo e assim");

cumps fpinto

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

ps: no teu codigo inicial so aconteceu o que aconteceu porque na tua versao de devc++ o return (0); nao da sem system("PAUSE");

Isso é ridículo. Por favor, sejam coerentes no que dizem e não se limitem a tentar arranjar uma pseudo-solução como esta.

O return 0; funciona em qualquer caso, o programa simplesmente fecha porque não lhe deste ordem em contrário. Simples.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade