mdkawaii
(usa Outra)
Enviado em 16/10/2019 - 03:23h
Pessoal, então. Eu tô com um projeto de desenvolve uma agenda e tô com um problema de armazenar e printar o valor de uma struct... Eu mando o usuário para uma struct, ela lê os dados e eu quero mostrar isso em outra função. Não posso colocar na main pois minha main contem return main();, ou seja, qualquer variável que eu ler na main, quando acontecer o return main();, elas irão ser zeradas pois irá ler a main tudo de novo... Então o meu problema é: mandei o usuário da main para uma função que vai ler os dados deles e armazenar.. porém, quando ele pedir pra ver esses resultados na main, como faço para mostrar sem ter que declarar na main? pois se eu declaro uma struct lá na parte de mostrar o dados que ele digitou, não vai conter nada pois após ele digitar os dados vai dar return main();, assim vai sumir o que ele digitou na main e vai estar na função que declarei fora... mas como chamar ela? uso ponteiro(mas não sei como)?
Irei deixar as linhas marcadas onde está meu problema:
Segue o código:
#include <stdlib.h>
#include <stdio.h>
struct agenda{
char PrimeiroNome[15];
char UltimoNome[15];
char ddd[6];
char telefone[12];
};
void PrintContatos();
void NomeTel();
//AQUI O USUARIO IRA SER REDIRECIONADO PARA ENTRAR COM SEUS DADOS
void NomeTel(struct agenda NT){
printf("\nDigite o primeiro nome do contato: ");
scanf("%14s", NT.PrimeiroNome);
printf("Digite o ultimo nome do contato: ");
scanf("%14s", NT.UltimoNome);
printf("Digite o DDD do contato: ");
scanf("%5s", NT.ddd);
printf("Digite o numero do contato: ");
scanf("%11s", NT.telefone);
}
//AQUI É ONDE EU QUERO QUE APAREÇA OS DADOS QUE ELE DIGITOU NA FUNÇÃO ACIMA
void PrintContatos(struct agenda x){
printf("\n\nContato: ");
printf("\nPrimeiro nome do contato: %s", x.PrimeiroNome);
printf("\nUltimo nome do contato: %s", x.UltimoNome);
printf("\nNumero do contato: (%s) %s", x.ddd, x.telefone);
}
int main(){
int opinici, numlistar, numadc, sublistar;
printf("\t\t\t\t\tBem-vindo a agenda!\n");
printf("\n");
printf("Tecle ENTER para ir a agenda...");
getchar();
system("cls");
printf("\t\t\t\tOpcoes disponiveis na agenda: \n");
printf("\n");
printf("Adicionar um contato a agenda (1)\n");
printf("\nListar contatos da agenda (2)\n");
printf("\nSair da agenda (3)\n");
printf("\nDigite o numero, de uma das opcoes listadas, para realizar uma acao: ");
scanf("%i", &opinici);
switch(opinici){
case 1:
system("cls");
printf("\t\t\t\t\tAdicione um contato a sua agenda: \n");
//AQUI É ONDE DEVERIA ESTAR A FUNÇÃO QUE EU CHAMO NORMALMENTE E O USUARIO VAI, FICA A DEMONSTRAÇÃO ABAIXO
struct agenda x;
NomeTel(x);
printf("\n\nContato armazenado!");
printf("\n");
do{
printf("\nDeseja voltar ao menu principal agora? Digite 1 para SIM e 2 para SAIR da agenda: ");
scanf("%i", &numadc);
if(numadc == 1){
system("cls");
return main();
}
if(numadc == 2){
system("cls");
printf("\t\t\t\t\t************************\n");
printf("\t\t\t\t\t***");
printf(" AGENDA ENCERRADA ***\n");
printf("\t\t\t\t\t************************\n");
}
}while(numadc < 1 && numadc > 2);
break;
case 2:
system("cls");
printf("\t\t\t\t\tLista de Contatos: \n");
printf("\n");
//AQUI É ONDE ESTÁ O PROBLEMA... NAO CONSIGO CHAMAR, POIS, SE EU PASSO "x" COMO PARAMETRO. NAO CONTEM NADA NA VARIAVEL POIS FOI DADO return main();
printf("\n\n");
printf("Acoes disponiveis: \n");
printf("\n");
printf("\tEditar contato (1)\n");
printf("\tApagar contato (2)\n");
printf("\tVoltar ao menu principal(3)\n");
printf("\nDigite o numero, de uma das opcoes listadas, para realizar uma acao: ");
scanf("%i", &numlistar);
if(numlistar == 1){
system("cls");
printf("Pagina em construcao!\n");
do{
printf("\nDigite 1 para VOLTAR ao menu inicial e 2 para ENCERRAR a agenda: ");
scanf("%i", &sublistar);
if(sublistar == 1){
system("cls");
return main();
}
if(sublistar == 2){
system("cls");
printf("\t\t\t\t\t************************\n");
printf("\t\t\t\t\t***");
printf(" AGENDA ENCERRADA ***\n");
printf("\t\t\t\t\t************************\n");
}
}while(sublistar > 2 || sublistar < 1);
}
if(numlistar == 2){
system("cls");
printf("Pagina em construcao!\n");
do{
printf("\nDigite 1 para VOLTAR ao menu inicial e 2 para ENCERRAR a agenda: ");
scanf("%i", &sublistar);
if(sublistar == 1){
system("cls");
return main();
}
if(sublistar == 2){
system("cls");
printf("\t\t\t\t\t************************\n");
printf("\t\t\t\t\t***");
printf(" AGENDA ENCERRADA ***\n");
printf("\t\t\t\t\t************************\n");
}
}while(sublistar > 2 || sublistar < 1);
}
if(numlistar == 3){
system("cls");
return main();
}
break;
case 3:
system("cls");
printf("\t\t\t\t\t************************\n");
printf("\t\t\t\t\t***");
printf(" AGENDA ENCERRADA ***\n");
printf("\t\t\t\t\t************************\n");
break;
default:
return main();
}
system("pause");
return 0;
}