Ir ao conteúdo
  • Cadastre-se

C Não consigo armazenar os valores da struct


Madson Smitt

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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);
}

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!