View Full Version : ajuda c
Me and you 09-04-2007, 21:09 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
Me and you 09-04-2007, 21:38 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;
}
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;
}
Falta-te o #include <curses.h>
Me and you 09-04-2007, 21:42 ponho depois do int main() ?
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
Em vez do getch(); da malévola curses.h, usa o getchar(); que é da stdio.h, e funciona. :)
MaxDamage 09-04-2007, 21:47 basta ser getchar(), e nao precisa de adicionar mais bibliotecas
edit: o alph foi mais rapido :P
Me and you 09-04-2007, 21:49 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
LumpyNutz 09-04-2007, 22:43 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.
Me and you 09-04-2007, 23:07 deu!!!!
obrigadão lumpynutz:)
Me and you 10-04-2007, 22:22 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:
a += 1;
Que é igualzinho a:
a = a + 1;
Ou ainda podes fazer:
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. :)
ó alphidio, julgo que isso já é C++, ele está a programar em C ;)
ó alphidio, julgo que isso já é C++, ele está a programar em C ;)
Nop, vem de C isso. :) Já te repreendi no Google Talk!
MadOnion 11-04-2007, 11:12 Nop, vem de C isso. :) Já te repreendi no Google Talk!
O henckele às vezes tem umas saídas assim :lol:
/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
Me and you 11-04-2007, 18:43 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 :/
Me and you 11-04-2007, 19:54 pois ainda n raparei nisso :S mas se dá vou ver:x2:
Angelizer 11-04-2007, 22:55 system("PAUSE");
em vez dos getchar(); ou dos fflush(stdin); usa este comando na ultima linha de codigo do main que a janela nao te fecha
Me and you 11-04-2007, 22:57 obrigado :)
mas isso e depois do return 0 certo?
Nop, antes do return 0;
Todo o código que se segue a um return (dentro do mesmo ambiente) nunca chega a ser executado, pois a função retorna nesse ponto.
Por exemplo:
if (xpto == 0) {
return 0;
}
blablabla
return 1;
blebleble
Neste caso, o return 0 só seria executado caso a condição do if fosse verdadeira, como tal o código que se segue PODE vir a ser executado, mas caso entre no if tudo o resto não é executado.
No entanto todo o código que se segue ao return 1 nunca vai ser executado, pois esse return é sempre efectuado, caso não entre no if acima.
Espero que tenhas compreendido ;)
abraços, HecKel
Me and you 15-04-2007, 20:14 boas tenho outra dúvida:
kal é adiferença entre pôr int main() e main() logo ao inicio?
Depende se queres declarar a função main com um tipo de dados ou não.
É uma boa prática declarar-se a função main como int, e devolver 0 quando o programa fecha sem erros ou outro valor qualquer quando um erro é encontrado.
Me and you 15-04-2007, 21:19 ah então e para isso. então se utilizar o main n preciso de por o return 0 certo?
Utiliza sempre int main. É mesmo uma boa prática, e sem qualquer tipo de dados deveria ser um erro, o que infelizmente não acontece. :)
main () - define-te uma função chamada main que não recebeu argumentos. e a funçao nao devolve um valor
int main() - ele devolve-te um valor. por segurança muita gente usa o int main() e depois o return 0;
acho que é mais ou menos assim. ha quem use tb o void main(). pelo que li, não há digamos um "lei certa" para o uso disso.
|
|