Enviado em 21/12/2010 - 21:21h
Pessoal, olá para todos e obrigado por estarem gastando um pouco do tempo de vocês comigo.
#include<stdio.h>
#include<stdlib.h>
////// ORIGINALMENTE AS FUNÇÕES ESTÃO EM ARQUIVOS SEPARADOS
// DECLARAÇÃO DA STRUCT A SER EXPLORADA
typedef struct registro_agenda{
char *name;
char *adress;
int *phone;
struct registro_agenda *next;
} registro;
// FUNÇÃO PARA ALOCAR MEMÓRIA PARA UM TIPO "REGISTRO",
// OBSERVE QUE ELA TEM RETORNO "VOID" PROPOSITALMENTE E
// COMO ARGUMENTO RECEBE O ENDEREÇO DE UM PONTEIRO DO TIPO "REGISTRO"
void aloca_registro(registro **ptr_registro, int len_name, int len_adress){
*ptr_registro = (registro *)malloc(sizeof(registro));
*ptr_registro->name = (char *)malloc(len_name*sizeof(char));
*ptr_registro->adress = (char *)malloc(len_adress*sizeof(char));
*ptr_registro->phone = (int *)malloc(sizeof(int));
*ptr_registro->next = NULL;
}
// FUNÇÃO PARA PREENCHIMENTO DE UM TIPO "REGISTRO"
preencher_registro(registro **ptr_registro){
int yes=1;
while(yes){
printf("\n\tDIGITE O NOME: ");
scanf("%s",**ptr_registro->nome);
printf("\n\tDIGITE O ENDERECO: ");
scanf("%s",**ptr_registro->adress);
printf("\n\tDIGITE O TELEFONE: ");
scanf("%i",**ptr_registro->phone);
printf("GOSTARIA DE COLOCAR MAIS UM CONTATO NA AGENDA?");
printf("\n\t0 - NAO\n\t1 - SIM");
scanf("%i", &yes);
if(yes == 1) {
*ptr_registro = *ptr_registro->next;
aloca_registro(**ptr_registro,30,50);
continue;
}
else break;
}
}
// FUNÇÃO PARA MOSTRAR UMA AGENDA NO CONSOLE
mostrar_agenda(registro **ptr_registro){
int reg=1;
while(*ptr_registro != NULL){
printf("MOSTRANDO REGISTRO %i", reg++);
printf("\tNOME %s\n", **ptr_registro->name);
printf("\tENDERECO %s\n", **ptr_registro->adress);
printf("\tTELEFONE %i\n", **ptr_registro->phone);
printf("----------------------------------------------------------------\n\n");
*ptr_registro = *ptr_registro->next;
}
}
int main(){
registro *agenda=NULL;
printf("Teste de ponteiros para ponteiros, structs com ponteiros e funções com esses tipos de dados\n");
aloca_registro(&agenda,30,50);
preencher_registro(&agenda);
mostrar_agenda(&agenda);
return 0;
}