Olá, eu sou um novato no mundo GNU/Linux, instalei o Ubuntu 8.1 a poucos dias (creio que 4 dias).
Inicialmente senti dificuldade pelas diferenças com o Ruindows, mas estou superando elas pouco a pouco, a instalação de novos programas foi uma dificuldade até entender o funcionamento do Adicionar/Remover, o tal apt-get.
A maioria dos problemas que eu tive consegui solucionar sozinho com a ajuda de rápidas buscas em alguns tópicos do fórum, mas realmente estou empacado em um pequeno problema.
Eu sou estudante de Engenharia de Computação, primeiro semestre, e comecei a ser instruído na programação em C a pouco, até agora usava o DevC++, no Ruindows. Assim que comecei a mexer com o linux uma das minhas preocupações seria como faria para programar em C no linux, usando o adiconar/remover achei o Anjuta, mas não gostei muito dele. Comecei a testar como seria compilar através do tal “GCC” usando apenas o gedit, inicialmente correu tudo bem, até começar a testar programas usando a conio.h e a função getch (que uso para pausar os “programas”).
Mais uma vez com uma rápida busca no fórum entendi que a conio.h não é uma biblioteca (é esse o termo?) nativa do linux, mas que existia a ncurses.h/curses.h que resolveria meu problema com o “getch”. Instalei a ncurses usando um comando do apt-get que peguei em algum dos tópicos que estava lendo, a instalação pareceu OK, mas o problema não foi totalmente sanado.
Realmente o GCC está compilando os programas que uso o getch, mas eles não funcionam, aparentemente a função getch está sendo totalmente ignorada. Eu não sei onde estou errando, talvez a sintaxe da linha de comando? O é necessário algo alem disso para rodar curses.h?
Eis um exemplo simples:
#include <curses.h>
#include <stdio.h>
main() {
float x;
printf("\n\tDigite um numero.");
x = getch();
printf("\n\tVoce digitou %.2f\n",x);
getch();
}
Como podem ver ele não pausou para eu digitar nada, seguiu adiante e considerou a variável “x” como -1.00.
o.O
Outra coisa, eu tinha lido que a função getchar(); também pode servir para pausar um programa, tentei voltar no tópico que tinha lido mas não achei novamente, qual a biblioteca que essa função usa? Curses.h? E posso usar ela no lugar do getch mesmo? Li algo sobre buffer ou algo assim, mas não entendi realmente.
Espero que possam me ajudar, o problema é simples e o texto é um pouco grande, mas eu acredito que as coisas “em seus mínimosssss detalhes” são úteis na hora de tirar dúvidas.
Até mais
--------------------------------------|| EDITADO (20:00) ||--------------------------------------Ah! Pesquisei na net sobre a ncurses e consegui entender o problema. Aparentemente para usar as funções da ncurses você tem que chamar a biblioteca e fechá-la depois de usar através dos comandos:
initscr(); /* para chamar ncurses */
endwin(); /* para fechar */
Bom, não sei se na conio.h existem comandos semelhantes, mas nunca precisei utilizar nada parecido para usar o getch();
O programa teste ficou assim:
#include <curses.h>
#include <stdio.h>
main() {
char x;
initscr();
printw("\n\tAperte uma tecla.");
noecho(); /* serve para nao mostrar a tecla apertada */
x = getch();
printw("\n\tVoce digitou %c\n",x);
getch();
endwin();
}
Só não entendi pq tive que definir a variável como "char". Quando eu definia como int e digitava um número ele voltava outro número "48+x", alguém sabe explicar pq isso acontece?
Em um dos tutoriais que eu li (
esse) ele fala da função "keypad(stdscr, TRUE)", segundo ele serve para "carregar o módulo do teclado para a tela padrão", como assim?? Se é o caso eu só poderia usar o getch depois de executar essa função, não?
Até mais o/