não sei o que há de errado

C

07/09/2022

#include <stdio.h>
#include <stdlib.h>

typedef struct pessoa {

int id;
char nome;
int cpf;
int rg;
char email;
struct pessoa *proximo;

} Tid;

void adicionar (Tid **cabeca);
void listar (Tid *cabeca);

int main()
{
Tid *cabeca = NULL;
Tid *noatual;

int opcao;

do {
printf("\n\nOpções: \n1 -> adicionar pessoa \n2 -> listar pessoas \n0 -> para sair:\n");
scanf("%d", &opcao);
switch(opcao) {
case 0:
break;
case 1:
adicionar(&cabeca);
case 2:
listar(cabeca);
break;

default: printf("\n\n Opção invalida!");
}

fflush(stdin);

}while (opcao != 0);

noatual = cabeca;
while (noatual != NULL)
{
cabeca = noatual -> proximo;
free(noatual);
noatual = cabeca;
}
}

void listar (Tid *noatual)

{
int id = 0;
while(noatual != NULL)
{
id++;
printf("\n\nID: %d\nNome: %c\nCpf: %d\nRg: %d\nE-mail: %c\n", id, noatual -> nome, noatual -> cpf, noatual -> rg, noatual -> email);
noatual = noatual -> proximo;
}
}

void adicionar (Tid **cabeca)
{
Tid *noatual, *novono;
int id;
char nome;
int cpf;
int rg;
char email;

printf("\nNome: ");
scanf("%s", &nome);
printf("\nCpf: ");
scanf("%d", &cpf);
printf("\nRg: ");
scanf("%d", &rg);
printf("\nE-mail: ");
scanf("%s", &email);

if (*cabeca == NULL) {
*cabeca = (Tid *) malloc(sizeof(Tid));
(*cabeca)-> id = id;
(*cabeca)->nome = nome;
(*cabeca)->cpf = cpf;
(*cabeca)->rg = rg;
(*cabeca)->email = email;
(*cabeca)->proximo = NULL;

} else {

noatual = *cabeca;
while(noatual->proximo != NULL)
noatual = noatual -> proximo;
novono = (Tid *) malloc(sizeof(Tid));
novono->id = id;
novono->nome = nome;
novono->cpf = cpf;
novono->rg = rg;
novono->email = email;
novono->proximo = NULL;
noatual->proximo = novono;

}

}
Pedro

Pedro

Curtidas 0
POSTAR