ajuda c

Me and you

Power Member
boas tou a começar a aprender c, só que já tou com dúvidas :S . pus o seguinte código no dev c++
#include <stdio.h>

int main()
{
printf("This is output from my first program!\n");
return 0;
}
e carreguei na opção compile e run, e abriu uma janela do dos e desapareceu rapidamente, nem deu tempo para ver se estava la escrito o k eu pus no código.
isto é normal n se conseguir ver o k se escreve :S?
 
Escreve getch(); antes do return 0;

É normal isso acontecer, basicamente o programa escreve e termina logo, não tens nada para o bloquear, com o getch o programa fica à espera de um carácter inserido pelo utilizador, só termina quando carregares numa tecla qualquer.

Espero que te ajude ;)

abraços, HecKel
 
obrigado heckel, já pus o getch(), só que me dá um erro: getch undeclared first use this function
o código que pus foi:
#include <stdio.h>

int main()
{
printf("This is output from my first program!\n");
getch();
return 0;
}
 
sorry about that :S

Não me lembrei de olhar para os includes, mas um search no google resolvia-te isso em segundos :P

abraços, HecKel
 
obrigado a todos :bounce:
agr que reparo, deu com aquele exemplo mas com este n :(
#include <stdio.h>

int main()
{
int b;
printf("Enter a value:");
scanf("%d", &b);
if (b < 5)
printf("The value is negative\n");
getchar();
return 0;
}
aparece o enter a value mas depois sai ,mesmo que eu coloque um numero menor que 5. :S
 
Última edição:
Antes do getchar() experimenta a colocar fflush(stdin); que serve para limpar o buffer do teclado.
Ja deve funcar assim, pk o getchar() devia tar a aproveitar um caracter do buffer.
 
boas,
surgiu-me outra dúvida:
qd ponho o código
#include <stdio.h>

int main()
{
int a;
a = 1;
while (a < 1000)
{
printf("%d\n", a);
a = a + 1;
}
fflush(stdin);
getchar();
return 0;
}

deviam aparecer todos os numeros desde 1 ate 999 mas aparecem desde o 701 ate 999. pk?
se eu puser a < 100 ja aparecem todos.
 
Primeiro vou-te explicar porque motivo usaste o fflush(stdin); :

Ao fazeres "scanf("%d", &b);", a variável "b" ficou com o valor inserido. Contudo, tu no teclado fizeste, por exemplo "5 <enter>". O getchar estava a recolher o <enter>, e por isso avançava.
O "fflush(stdin);", limpa o buffer do teclado, ou seja, o enter, e obriga o getchar e pedir um caracter novo.
Atenção que o fflush não está definido o seu funcionamento com o buffer de entrada, de modo que usar isso é um mau hábito de programação.

--


Não te aparecem todos os números porque a consola apaga os comandos mais antigos. Não te preocupes que eles estão todos a ser escritos.
 
Um truquezinho para ires aprendendo. :)

Se quiseres incrementar uma variável um certo número podes fazer:
Código:
a += 1;
Que é igualzinho a:
Código:
a = a + 1;
Ou ainda podes fazer:
Código:
a++;
Mas neste caso serve apenas para aumentar a em 1. Enquanto que nos outros serve para aumentar a em qualquer número que queiras.

Isto funciona também para subtracções, multiplicações e divisões. Experimenta um pouco. :)
 
/me foge :P

Por acaso ia mesmo apostar que isso só apareceu no C++, mas os geeks já se pronunciaram :205:

Vivendo, aprendendo :p

abraços, HecKel
 
boas, obrigado pelas sugestões. mas se dizem que o fflush(stdin) n se deve usar, o k utilizo?
e que tipo no site que tou a aprender os exemplos de programas fecham todos a janela rapidamente e nem dá para ver :S
 
e o system pause que aparece no fim do main nao costuma manter a janela do programa aberta? axo k o dev c++ trazia isso. e penso que servia para isso. penso eu :/
 
Back
Topo