Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda em funções


Eliane21

Pergunta

Olá! Sou nova por aqui. Estou tentando fazer um pequeno cadastro em C utilizando struct e ponteiros. Acontece que minha função listagem está retornando (null) mesmo depois de ter cadastrado um nome. Alguém pode me ajudar? Segue o código abaixo:

#include<stdio.h>

#include<conio.h>

struct cadastro /* cria a estrutura cadastro e define suas variaveis */

{

char nome[30];

char cargo[20];

char sexo;

char cidade [30];

char estado [2];

int codigo;

int telefone;

int cpf;

int idade;

int salario;

};

struct cadastro cad; /*cria a variavel cad do tipo estrutura

com todos os campos definidos em cadastro */

struct cadastro *p; /*cria um ponteiro para a estrutura*/

void listagem(struct cadastro *p)

{

printf("Nome:%s", p -> nome);

getch();

}

void inclusao(void)

{

printf("Digite o nome completo: ");

fflush(stdin);

gets(p -> nome);

listagem(p);

}

void exclusao(void)

{

printf("EXCLUSAO.");

getch();

}

void alteracao(void)

{

printf("ALTERACAO.");

getch();

}

void main()

{

struct cadastro cad; /*cria a variavel cad do tipo estrutura

com todos os campos definidos em cadastro */

struct cadastro* p;

int opcao;

p=&cad; //inicializando o ponteiro p com o endereco de cad

clrscr();

printf("CADASTRO");

printf("============================\n\n");

printf("\t\t 1 INCLUSAO\n\t\t 2 EXCLUSAO\n\t\t 3 ALTERAR\n\t\t 4 LISTAGEM\n\t\t 5 SAIR\n\n");

do

{

printf("Qual a sua opcao? ");

scanf("%d", &opcao);

switch(opcao)

{

case 1: inclusao();

break;

case 2: exclusao();

break;

case 3: alteracao();

break;

case 4: listagem(p);

break;

}

}

while ((opcao < 1) || (opcao > 4));

}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá Durub, Obrigada!

Arrumei o erro eu estava declarando 2 vezes o struct cadastro cad e o struct cadastro* p.

Estou apontando o p para cad para inicializar o ponteiro.

Agora está funcionando, porém estou continuando o cadastro e quero fazer várias fichas com todos os campos que eu tenho. No caso, acho que seria só criar assim: struct cadastro cad[15];

Minha dúvida é, como faço para acessar cada campo de cada cadastro?

Tentei algo como gets(p[0] -> nome); Mas isso não é possível. Como devo acessar? O código atualizado segue abaixo, desculpe por não usar o codebox, mas ele não está funcionado para mim.

bj,

Eliane

#include<stdio.h>

#include<conio.h>

struct cadastro /* cria a estrutura cadastro e define suas variaveis */

{

char nome[30];

char cargo[20];

char sexo;

char cidade [30];

char estado [2];

int codigo;

int telefone;

int cpf;

int idade;

int salario;

};

struct cadastro cad; /* cria a variavel global cad do tipo estrutura

com todos os campos definidos em cadastro */

struct cadastro *p=&cad; /*cria um ponteiro para a estrutura e inicializa

com o endereco de cad*/

void listagem(struct cadastro *p)

{

printf("Nome:%s", p -> nome);

printf("\nPressione ENTER para continuar");

getch();

main();

}

void inclusao(void)

{

printf("Digite o nome completo: ");

fflush(stdin);

gets(p -> nome);

printf("Nome cadastrado com sucesso, pressione ENTER para continuar.");

getch();

main();

}

void exclusao(void)

{

printf("EXCLUSAO.");

getch();

}

void alteracao(void)

{

printf("ALTERACAO.");

getch();

}

void menu(int opcao)

{

switch(opcao)

{

case 1: inclusao();

break;

case 2: exclusao();

break;

case 3: alteracao();

break;

case 4: listagem(p);

break;

}

}

main()

{

int opcao;

clrscr();

printf("CADASTRO\n");

printf("============================\n\n");

printf("\t\t 1 INCLUSAO\n\t\t 2 EXCLUSAO\n\t\t 3 ALTERAR\n\t\t 4 LISTAGEM\n\t\t 5 SAIR\n\n");

do

{

printf("Qual a sua opcao? ");

scanf("%d", &opcao);

if ((opcao < 1) || (opcao > 5))

{

printf("Opcao invalida. ");

}

else

{

menu(opcao);

}

}

while ((opcao < 1) || (opcao > 5));

return 0;

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...