Ir ao conteúdo

Posts recomendados

Postado

Então, guys, tô criando um programa que é o projeto de uma agenda. Tô na parte onde tenho que criar as estruturas para receber os dados e tô querendo printar esse resultado... Porém, como meu programa tem return main(); creio que ele está apagando a variável toda vez que volto para o menu inicial e não tô achando um jeito de armazenar esse valor recebido dos dados e printar em umas funções fora da main, já que se eu deixar na main elas vão ser apagadas...

Podem mostrar como posso armazenar esses dados recebidos e printar eles utilizando mais ou menos esse escopo ?

 

Segue o código:

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

struct agenda{
	char PrimeiroNome[15];
	char UltimoNome[15];
	int telefone;
	short ddd;
};

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("%hi", &NT.ddd);
	printf("Digite o numero do contato: ");
	scanf("%i", &NT.telefone);
}

void PrintContatos(struct agenda x){
	printf("\n\nContato: ");
	printf("\nPrimeiro nome do contato: %s", NT.PrimeiroNome);
	printf("\nUltimo nome do contato: %s", NT.UltimoNome);
	printf("\nNumero do contato: (%hi) %i", NT.ddd, NT.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 opções 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");
			
			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");
				
				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 opções 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;
}

 

 

  • Curtir 1
Postado

@KXSY

6 horas atrás, KXSY disse:

Recomendo você ler o capitulo de funções do C completo e total na pagina 151, o seu problema e sobre passagem por valor e passagem por referencia.

 

Aqui vai um exemplo de como passar parâmetros


/* Bibliotecas */
#include <stdio.h>
#include <stdlib.h>

/* Constantes */
#define TAM_NOME 20
#define TAM_TELE 15
#define QUANT_CONTATO 1

/* Tipos */
typedef struct
{
  char nome[TAM_NOME];
  char telefone[TAM_TELE];
}TContato;

/* Procedimentos */

void PegaContato(TContato *contato);
/* Const só está ai para mostrar que não vai haver modificação na variavel */
void MostraContato(const TContato contato);

int main()
{
  TContato contatos[QUANT_CONTATO];
  char contador;
  /* Pega os contatos do usuario */
  for(contador=0; contador<QUANT_CONTATO; contador++)
    PegaContato(&contatos[contador]);
  /* Mostra os contatos para o usuario */
  for(contador=0; contador<QUANT_CONTATO; contador++)
    MostraContato(contatos[contador]);
  getchar();
  return(0);
}

void PegaContato(TContato *contato)
{
  printf("\nDigite o nome da pessoa:\t");
  fgets(contato->nome,TAM_NOME,stdin);
  printf("\nDigite o numero da pessoa:\t");
  fgets(contato->telefone,TAM_TELE,stdin);
}

void MostraContato(const TContato contato)
{
  printf("\nNome:\t%s",contato.nome);
  printf("\nNumero:\t%s",contato.telefone);
}

 

Vou dar uma olhada, valeu mesmo.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!