#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct Pessoa {
char nome[20];
int dataNasc[3];
int telefone;
} pessoa;
//Preenche o cadastro - OPERADOR SETA ->
void preencher(pessoa *cadastro) {
printf ("Digite um nome: ");
gets (cadastro->nome);
printf ("Digite a data de nascimento: ");
scanf ("%d/%d/%d", &cadastro->dataNasc[0], &cadastro->dataNasc[1], &cadastro->dataNasc[2]);
printf ("Digite o numero do celular: ");
scanf ("%d", &cadastro->telefone);
}
//Mostra o cadastro
void mostrar(pessoa *cadastro) {
printf ("%s\n", cadastro->nome);
printf ("%02d/%02d/%d\n", cadastro->dataNasc[0], cadastro->dataNasc[1], cadastro->dataNasc[2]);
printf ("%d\n", cadastro->telefone);
printf ("\n");
}
//Inicializa as estruturas.nome[0] com ''
void inicia(pessoa *cadastro, int tamanho) {
register int i;
for (i = 0; i < tamanho; i++) {
cadastro[i].nome[0] = '';
}
}
int main(void) {
pessoa *cadastro = NULL;
int i, qtde;
printf ("Digite a quantidade ");
scanf ("%d", &qtde);
fflush(stdin);
//Aloca x espaço para cadastro
cadastro = malloc(sizeof(pessoa) * qtde);
//Testa se realmente foi alocado
if (!(cadastro = malloc(qtde))) {
printf ("não alocou.");
exit(1);
}
inicia(cadastro, qtde);
for (i = 0; i < qtde; i++) {
fflush(stdin);
preencher(&cadastro[i]); //Passo o endereço de cadastro para a função
}
for (i = 0; i < qtde; i++) {
mostrar(&cadastro[i]); //Passo o endereço de cadastro para a função
}
return 0;
} Consertei, compilo. Mas ainda tem um erro, não consigo escrever em cadastro->nome. Já tentei inicicalizar esse campo com a funçao inicia , mas nada. Me ajuda de novo por favor!