ai pessoal, preciso urgente de uma dica de como alterar um cadastro em uma lista encadeada.
por favor me deem uma ajudinha.
o codigo e o seguinte:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<alloc.h>
#include<conio.h>
typedef struct cad{
char nome[30];
char end[40];
char cid[15];
char est[3];
char tel[12];
struct cad *prox;
}entrada_lista;
entrada_lista *inicio;
int agenda(void);
void inserir(void);
void alterar(void);
void remover(void);
void listartodos(void);
void listarultimo(void);
int main(void){
inicio=NULL;
for (;;){
switch(agenda()){
case 1:inserir();
break;
case 2:alterar();
break;
case 3:remover();
break;
case 4:listartodos();
break;
case 5:listarultimo();
break;
case 6:exit(0);
}
}
}
int agenda(void){
int c;
system(“cls”);
printf("\t\t********************************\n");
printf("\t\t*********** AGENDA \n");
printf("\t\t*******************\n");
printf("\n1 - Inserir\n");
printf("\n2 - Alterar\n");
printf("\n3 - Remover Ultimo Contato\n");
printf("\n4 - Listar Todos\n");
printf("\n5 - Listar Ultimo\n");
printf("\n6 - Sair\n\n");
do{
printf("Opcao:");
scanf("%d",&c);
}while (c<1||c>6);
return c;
}
void inserir(void){
entrada_lista *info;
info=(entrada_lista *)malloc(sizeof(entrada_lista));
if (!info){
printf("\nSem Memoria");
return;
}
system("cls");
printf("\nDigite o Nome:");
gets(info->nome);
gets(info->nome);
printf("\nDigite o Endereco:");
gets(info->end);
printf("\nDigite a Cidade:");
gets(info->cid);
printf("\nDigite o Estado:");
gets(info->est);
printf("\nDigite o Telefone:");
gets(info->tel);
info->prox=inicio;
inicio=info;
}
void alterar(void){
char s;
entrada_lista *alte;
/*alte=(entrada_lista )malloc(sizeof(entrada_lista));/
system(“cls”);
entrada_lista *percorre_lista;
system(“cls”);
percorre_lista=inicio;
printf("\n\t\t\tContatos Armazenados\n\n");
while (percorre_lista!=NULL){
printf("\nNome: %s",percorre_lista->nome);
printf("\nEndereco: %s",percorre_lista->end);
printf("\nCidade: %s",percorre_lista->cid);
printf("\nEstado: %s",percorre_lista->est);
printf("\nTelefone: %s\n",percorre_lista->tel);
printf("\nDeseja Alterar Este Contato?");
scanf("%c",s);
if (s == ‘S’ || ‘s’){
system(“cls”);
printf("\nDigite o Novo Nome:");
gets(alte->nome);
gets(alte->nome);
printf("\nDigite o Novo Endereco:");
gets(alte->end);
printf("\nDigite a Nova Cidade:");
gets(alte->cid);
printf("\nDigite o Novo Estado:");
gets(alte->est);
printf("\nDigite o Novo Telefone:");
gets(alte->tel);
}
percorre_lista=percorre_lista->prox;
}
}
void remover(void){
entrada_lista *aux;
if (aux==NULL){
system(“cls”);
printf(“ERRO!!!”);
return;
}
else{
aux=inicio;
inicio=inicio->prox;
free(aux);
}
}
void listartodos(void){
entrada_lista *percorre_lista;
system(“cls”);
percorre_lista=inicio;
printf("\n\t\t\tContatos Armazenados\n\n");
while (percorre_lista!=NULL){
printf("\nNome: %s",percorre_lista->nome);
printf("\nEndereco: %s",percorre_lista->end);
printf("\nCidade: %s",percorre_lista->cid);
printf("\nEstado: %s",percorre_lista->est);
printf("\nTelefone: %s\n",percorre_lista->tel);
percorre_lista=percorre_lista->prox;
}
getch();
}
void listarultimo(void){
entrada_lista *percorre_lista;
system("cls");
percorre_lista=inicio;
printf("\n\t\t\tUltimo Contato Armazenado\n\n");
while (percorre_lista!=NULL){
printf("\nNome: %s",percorre_lista->nome);
printf("\nEndereco: %s",percorre_lista->end);
printf("\nCidade: %s",percorre_lista->cid);
printf("\nEstado: %s",percorre_lista->est);
printf("\nTelefone: %s\n",percorre_lista->tel);
percorre_lista=NULL;
}
getch();
}