Erro do compilador GCC em execução de programa em C

Iniciado por willmesquita, 27 de Junho de 2014, 18:21

tópico anterior - próximo tópico

willmesquita

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?


irtigor

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.

willmesquita

#2
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
    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);}



    }