Como está estudando C? Está fazendo algum curso ou usando um material de qualidade? Pois parece que você está tropeçando em alguns conceitos simples.
Algo importante, em qualquer linguagem, é aprender a ler as mensagens de erro. Por exemplo:
main must return int. = main deve retornar int
Em C, sua função main deve retornar int, a mensagem é bem clara. Então mude de:
main(){
para
int main(){
E, embora não seja obrigatório, é bom retornar algo do main, colocando um return no final. Algo como:
int main(){
// código já existente
return 0; //zero tipicamente indica "tudo ok"
}
Falta um ponto e vírgula depois da declaração do seu struct. Seu compilador parece apenas emitir um aviso (“perhaps a semicolor is missing…”), mas é algo que pode causar problemas em outros compiladores.
struct registro {
char nome[80];
int idade;
double peso;
double altura;
}; // ponto e virgula adicionado!
Seguindo adiante, seu array é do tipo registro, mas ao ler você está tentando acessar os membros internos do struct (nome, idade e etc), como arrays.
Por fim, para o tipo double, o scanf precisa de um parâmetro %lf em vez de %d, que é para int.
O main ficaria mais ou menos assim:
int main() {
struct registro pessoa[10];
printf("Dados para o arquivo: \n");
for(int i = 0; i < 10; i++) {
printf("\n Nome: ");
scanf("%s", &pessoa[i].nome);
printf("\n Idade: ");
scanf("%d", &pessoa[i].idade);
printf("\n Peso: ");
scanf("%lf", &pessoa[i].peso);
printf("\n Altura: ");
scanf("%lf", &pessoa[i].altura);
}
return 0;
}
Não tenho um compilador C no momento, então não pude testar o que fiz. Efetue os ajustes, entenda as diferenças, e se ocorrerem erros, volte aqui com os novos erros.
No seu outro tópico, te foi sugerido usar fgets no lugar de scanf. Não chegou a dar uma olhada?
Abraço.