Autor Tópico: Erro do compilador GCC em execução de programa em C  (Lida 5043 vezes)

Offline willmesquita

  • Usuário Ubuntu
  • *
  • Mensagens: 18
    • Ver perfil
Erro do compilador GCC em execução de programa em C
« Online: 27 de Junho de 2014, 18:21 »
Buenas, vim aqui porque até o momento não entendi o erro que o GCC está acusando no programa que não roda. Segue abaixo o link pro código:
http://pastebin.com/ZfbQCsdS

e o compilador segue com a mensagem seguinte:
william@william-Inspiron-5437:~/UFSC/3º Semestre/Programação II/ex1_aula25$ gcc main.c -o main
main.c: In function ‘insereDados’:
main.c:104:9: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
         gets((ptr+i)->nome);
         ^
/tmp/ccFwmQRR.o: na função `insereDados':
main.c:(.text+0x2a2): aviso: the `gets' function is dangerous and should not be used.
/tmp/ccFwmQRR.o: na função `opcao':
main.c:(.text+0x128): referência indefinida para `getch'
collect2: error: ld returned 1 exit status

O que significa o erro da última linha?

« Última modificação: 03 de Julho de 2014, 17:03 por willmesquita »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Erro do compilador GCC em execução de programa em C
« Resposta #1 Online: 28 de Junho de 2014, 00:01 »
Ld é o linker, teu problema é que você usou "getch" mas essa função não esta definida. No Windows você encontra ela na conio, no Linux pelo codigo eu simplesmente trocaria, nao vale a pena adicionar uma bibloteca pro que você está fazendo.

Offline willmesquita

  • Usuário Ubuntu
  • *
  • Mensagens: 18
    • Ver perfil
Re: Erro do compilador GCC em execução de programa em C
« Resposta #2 Online: 30 de Junho de 2014, 20:19 »
Até ai tudo bem, agora o programa ta pulando as linhas quando lê mesmo usando a função setbuf(stdin,NULL); o que pode ser?


PS: Em um segundo programa meu, mesmo com os __fpurge(stdin), na segunda vez que ele vai pegar os dados ele pula o nome
Código: [Selecionar]
    while(1)
    {
        __fpurge(stdin);
        printf("Informe o nome: ");
scanf("%[^\n]s", (ptr+i)->nome);
        printf("Informe a idade: ");
__fpurge(stdin);
        scanf("%d", &(ptr+i)->idade);
        printf("Informe a altura: ");
       
scanf("%f", &(ptr+i)->altura);
        printf("Informe o peso: ");
       
scanf("%f", &(ptr+i)->peso);
        system("clear");
        __fpurge(stdin);
        printf("Deseja inserir mais dados? <s/n>\n");
        scanf("%c", &op);
        if(op=='n')
{ break;}
        else{ i++; __fpurge(stdin);}



    }
« Última modificação: 30 de Junho de 2014, 21:40 por willmesquita »