struct.c:50:2: aviso: passing argument 1 of ‘inicia’ from incompatible pointer type [habilitado por padrão]
struct.c:27:6: nota: expected ‘struct pessoa *’ but argument is of type ‘struct pessoa **’
Ficarei grato se me ajudarem!
#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;
}
Pergunta
tek6
Boa Noite! Não intendo o erro desse código:
struct.c: Na função ‘main’:
struct.c:50:2: aviso: passing argument 1 of ‘inicia’ from incompatible pointer type [habilitado por padrão]
struct.c:27:6: nota: expected ‘struct pessoa *’ but argument is of type ‘struct pessoa **’
Ficarei grato se me ajudarem!
#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; }Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.