0
This error only occurs when I add a second element to my chained list, I know the problem is in the Else of the inse_contact function but I can’t identify it.
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct{
char Nome[40];
char Telefone[15];
char Celular[15];
char Email[40];
struct Agenda *Ponteiro_Aponta_Proximo;
}Agenda;
Agenda *cria_agenda(){
return NULL;
}
Agenda *insere_contato(Agenda *Ponteiro_Inicio, char Nome_Parametro, char Telefone_Parametro, char Celular_Parametro, char Email_Parametro){
if(Ponteiro_Inicio == NULL){
Ponteiro_Inicio = (Agenda *) malloc(sizeof(Agenda));
Ponteiro_Inicio->Nome[40] = Nome_Parametro;
Ponteiro_Inicio->Telefone[15] = Telefone_Parametro;
Ponteiro_Inicio->Celular[15] = Celular_Parametro;
Ponteiro_Inicio->Email[40] = Email_Parametro;
Ponteiro_Inicio ->Ponteiro_Aponta_Proximo = NULL;
return Ponteiro_Inicio;
}else{
Agenda *Vetor_Apontador;
Vetor_Apontador = (Agenda *) malloc(sizeof(Agenda));
strcpy(Vetor_Apontador->Nome[40],Nome_Parametro);
strcpy(Vetor_Apontador->Telefone[15],Telefone_Parametro);
strcpy(Vetor_Apontador->Celular[15],Celular_Parametro);
strcpy(Vetor_Apontador->Email[40],Email_Parametro);
Vetor_Apontador -> Ponteiro_Aponta_Proximo = Ponteiro_Inicio;
return Vetor_Apontador;
}
}
void lista_contatos(Agenda *Elementos){
Agenda *Ponteiro_Para_Impressao = Elementos;
while(Ponteiro_Para_Impressao != NULL){
printf("\nO nome do contato é : %s", Ponteiro_Para_Impressao->Nome);
Ponteiro_Para_Impressao = Ponteiro_Para_Impressao -> Ponteiro_Aponta_Proximo;
}
}
int main(){
Agenda * Agnd;
char Nome_Main[40];
char Telefone_Main[15];
char Celular_Main[15];
char Email_Main[40];
Agnd = cria_agenda();
int Opcao = 10;
while(Opcao != 4){
printf("\nMenu de opcoes:\n\n");
printf("1 - Inserir Contato\n");
printf("2 - Listar Contatos\n");
printf("3 - Buscar Contato\n");
printf("4 - Sair\n");
printf("\nDigite a opcao a ser executada : ");
scanf("%d",&Opcao);
while(Opcao < 1 || Opcao > 4){
printf("\nOpcao invalida, Digite novamente a opcao : ");
scanf("%d",&Opcao);
}
switch(Opcao){
case 1:
setbuf(stdin, NULL);
printf("\nDigite o Nome, Telefone, Celular, e Email da pessoa nessa sequencia\n");
fgets(Nome_Main,40,stdin);
fgets(Telefone_Main,15,stdin);
fgets(Celular_Main,15,stdin);
fgets(Email_Main,15,stdin);
Agnd = insere_contato(Agnd, Nome_Main, Telefone_Main, Celular_Main, Email_Main);
break;
case 2:
lista_contatos(Agnd);
printf("\n");
break;
}
}
return 0;
}
It didn’t work out, keep making the same mistake! You made it there and it worked?
– Dumb