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