Função ' getche ' gcc .

Iniciado por uthacod, 04 de Dezembro de 2015, 00:09

tópico anterior - próximo tópico

uthacod

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

int MDC(int A, int B){
   int r;
   while(B!=0){
      r=A%B;
      A=B;
      B=r;
   }
   return A;
}
main(){
   int m,A,B;
   char c;
   do{
      printf("Digite o valor de (A) e (B)");
      scanf("%d %d",&A,&B);
      m=MDC(A,B);
      printf("%d",m);
      printf("\n");
      printf("Continua?(S/N)");
      c=getche();
      printf("\n");
   }while((c=='S')||(c=='s'));
   system("PAUSE");
   return 0;
}

O erro é :
teste.c:3:18: fatal error: conio.h: No such file or directory
#include<conio.h>
                  ^
compilation terminated.

Se eu eliminar a função getche o programa roda sem erros. O problema é que eu quero a opção de continuar ou não com a execução do código através dos caracteres s(sim) ou n(não). Alguém pode dar uma luz de quais bibliteocas usar no gcc (ubuntu 14.04)

irtigor

Conio não faz parte do padrão ISO ou POSIX . A stdio tem a função getchar e getc, também dá pra usar a biblioteca ncurses (getch) -- leve em consideração que a leitura é por padrão feita em buffers. Também não existe o comando pause, então "system("PAUSE");" é inútil.

Obs: use a tag code do fórum pra formatar a apresentação de códigos.

uthacod

Citação de: irtigor online 04 de Dezembro de 2015, 11:56
Conio não faz parte do padrão ISO ou POSIX . A stdio tem a função getchar e getc, também dá pra usar a biblioteca ncurses (getch) -- leve em consideração que a leitura é por padrão feita em buffers. Também não existe o comando pause, então "system("PAUSE");" é inútil.

Obs: use a tag code do fórum pra formatar a apresentação de códigos.

Entendi. Amigo como ficaria então código acima descrito por mim com a função getc? por que eu tentei com ela e deu o mesmo erro.

irtigor

Com o getc você tem que indicar o stream da onde vai fazer a leitura, se passar stdin (entrada padrão/teclado) é equivalente ao getchar.

uthacod

Citação de: irtigor online 04 de Dezembro de 2015, 13:26
Com o getc você tem que indicar o stream da onde vai fazer a leitura, se passar stdin (entrada padrão/teclado) é equivalente ao getchar.

Não entendi. Tem como fazer um código simples pra eu dar uma olhada.

irtigor

É exatamente o que vai encontrar por ai... de qualquer forma:


#include<stdio.h>

int main()
{
   char c;

   printf("Char: ");
   c = getc(stdin);
   printf("%c\n",c);
   return(0);
}

uthacod

Gente. Problema resolvido. Era só adicionar o caminho dos arquivos e cabeçalho.(http://ubuntuforum-pt.org/index.php?topic=42890.0) aqui mesmo no fórum tem a dica. Só que antes precisam instalar  os pacotes relativos a biblioteca ncurses.h(http://tutorfreebr.blogspot.com.br/2015/05/como-utilizar-biblioteca-ncursesh.html)  Valeu pela força e fiquem com Deus.

irtigor

Como já havia dito o ncurses é uma opção, mas vou deixar claro que pra esse teu exemplo é usar um canhão pra matar mosquito.