finalbreak Postado Junho 24, 2015 Denunciar Share Postado Junho 24, 2015 Olá pessoal. Estou tendo problemas ao tentar guardar mais de uma informação dentro de uma struct que foi passada como referência. O código: #include <stdio.h> #include <stdlib.h> #include <locale.h> typedef struct{ char nome[50]; char endereco[50]; int telefone; int cpf; int cdc; int cdd; } FUNCIONARIO; void fcadastro(FUNCIONARIO *cf){ printf("INSIRA O NOME DO FUNCIONÁRIO: "); fflush(stdin); gets(cf -> nome); printf("INSIRA O ENDEREÇO DO FUNCIONÁRIO: "); fflush(stdin); gets(cf -> endereco); printf("INSIRA O TELEFONE DO FUNCIONÁRIO: "); scanf("%i", &cf -> telefone); printf("INSIRA O CPF DO FUNCIONÁRIO: "); scanf("%i", &cf -> cpf); printf("INSIRA O CÓDIGO DO CARGO: "); scanf("%i", &cf -> cdc); printf("INSIRA O CÓDIGO DO DEPARTAMENTO: "); scanf("%i", &cf -> cdd); } void exbircf(FUNCIONARIO cf){ printf("NOME DO FUNCIONÁRIO: %s\n", cf.nome); printf("ENDEREÇO DO FUNCIONÁRIO: %i\n", cf.endereco); printf("TELEFONE DO FUNCIONÁRIO: %i\n", cf.telefone); printf("CPF DO FUNCIONÁRIO: %i\n", cf.cpf); printf("CÓDIGO DO CARGO: %i\n", cf.cdc); printf("CÓDIGO DO DEPARTAMENTO: %i\n", cf.cdd); } int main(){ setlocale(LC_ALL, "portuguese"); FUNCIONARIO cfuncionario; fcadastro(&cfuncionario); exbircf(cfuncionario); system("pause"); return 0; } Queria saber como faço para armazenar vários dados dentro dessa estrutura, como num vetor de n elementos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Barao Postado Junho 24, 2015 Denunciar Share Postado Junho 24, 2015 Seu código tem alguns erros voce viu o console apos a compilacão. Para armazenar vários valores em uma estrutura é necessário usar vetores e matrizes veja seu código abaixa utilizando matrizes e com erros corrigidos. Esta funcionando mas peço que você leia e entenda como foi feito se não nada vai te acrescentar. Att barão. #include <stdio.h> #include <stdlib.h> #include <locale.h> #define SIZE 50 int controle = 0;//só para controle de cadastros typedef struct{ char nome[SIZE][SIZE]; /*uma matriz de 50 x 50 */ char endereco[SIZE][SIZE]; int telefone[SIZE]; int cpf[SIZE]; int cdc[SIZE]; int cdd[SIZE]; } FUNCIONARIO; void fcadastro(FUNCIONARIO *cf){ int opcao; int i=0; do{ system("cls"); printf("INSIRA O NOME DO FUNCIONÁRIO: "); //fflush(stdin);use somente para limpar o buffer de saída scanf("%s", cf -> nome[i]);/*A funcao gets esta absoleta por causar overflow*/ printf("INSIRA O ENDEREÇO DO FUNCIONÁRIO: "); //fflush(stdin); use somente para limpar o buffer de saída scanf("%s", cf -> endereco[i]);/*A funcao gets esta absoleta por causar overflow*/ printf("INSIRA O TELEFONE DO FUNCIONÁRIO: "); scanf("%i", &cf -> telefone[i]); printf("INSIRA O CPF DO FUNCIONÁRIO: "); scanf("%i", &cf -> cpf[i]); printf("INSIRA O CÓDIGO DO CARGO: "); scanf("%i", &cf -> cdc[i]); printf("INSIRA O CÓDIGO DO DEPARTAMENTO: "); scanf("%i", &cf -> cdd[i]); i++; controle++;/*A cada cadastro soma +1 a variavel global controle assim vou saber quantos cadastro foram feitos vai facilitar a exibicao no for da funcao exibir*/ printf("Press... (1) para novo cadastro, Outro valor para sair...\n\n"); scanf("%d", &opcao); }while(opcao == 1); } void exbircf(FUNCIONARIO *cf){/*Passa como ponteiro tambem*/ int i=0; system("cls"); for(i=0; i <controle; i++){/*Exibi todos os cadastros realizados*/ printf("NOME DO FUNCIONÁRIO: %s\n", cf->nome[i]); printf("ENDEREÇO DO FUNCIONÁRIO: %s\n", cf->endereco[i]);/*O especificador de formato %i É para inteiros mas a variável endereco é um vetor char[50]*/ printf("TELEFONE DO FUNCIONÁRIO: %i\n", cf->telefone[i]); printf("CPF DO FUNCIONÁRIO: %i\n", cf->cpf[i]); printf("CÓDIGO DO CARGO: %i\n", cf->cdc[i]); printf("CÓDIGO DO DEPARTAMENTO: %i\n", cf->cdd[i]); printf("\n\n"); } } int main(){ setlocale(LC_ALL, "portuguese"); FUNCIONARIO cfuncionario; fcadastro(&cfuncionario); exbircf(&cfuncionario); system("pause"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 finalbreak Postado Junho 24, 2015 Autor Denunciar Share Postado Junho 24, 2015 <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Seu código tem alguns erros voce viu o console apos a compilacão. Para armazenar vários valores em uma estrutura é necessário usar vetores e matrizes veja seu código abaixa utilizando matrizes e com erros corrigidos. Esta funcionando mas peço que você leia e entenda como foi feito se não nada vai te acrescentar. Att barão. #include <stdio.h> #include <stdlib.h> #include <locale.h> #define SIZE 50 int controle = 0;//só para controle de cadastros typedef struct{ char nome[SIZE][SIZE]; /*uma matriz de 50 x 50 */ char endereco[SIZE][SIZE]; int telefone[SIZE]; int cpf[SIZE]; int cdc[SIZE]; int cdd[SIZE]; } FUNCIONARIO; void fcadastro(FUNCIONARIO *cf){ int opcao; int i=0; do{ system("cls"); printf("INSIRA O NOME DO FUNCIONÁRIO: "); //fflush(stdin);use somente para limpar o buffer de saída scanf("%s", cf -> nome[i]);/*A funcao gets esta absoleta por causar overflow*/ printf("INSIRA O ENDEREÇO DO FUNCIONÁRIO: "); //fflush(stdin); use somente para limpar o buffer de saída scanf("%s", cf -> endereco[i]);/*A funcao gets esta absoleta por causar overflow*/ printf("INSIRA O TELEFONE DO FUNCIONÁRIO: "); scanf("%i", &cf -> telefone[i]); printf("INSIRA O CPF DO FUNCIONÁRIO: "); scanf("%i", &cf -> cpf[i]); printf("INSIRA O CÓDIGO DO CARGO: "); scanf("%i", &cf -> cdc[i]); printf("INSIRA O CÓDIGO DO DEPARTAMENTO: "); scanf("%i", &cf -> cdd[i]); i++; controle++;/*A cada cadastro soma +1 a variavel global controle assim vou saber quantos cadastro foram feitos vai facilitar a exibicao no for da funcao exibir*/ printf("Press... (1) para novo cadastro, Outro valor para sair...\n\n"); scanf("%d", &opcao); }while(opcao == 1); } void exbircf(FUNCIONARIO *cf){/*Passa como ponteiro tambem*/ int i=0; system("cls"); for(i=0; i <controle; i++){/*Exibi todos os cadastros realizados*/ printf("NOME DO FUNCIONÁRIO: %s\n", cf->nome[i]); printf("ENDEREÇO DO FUNCIONÁRIO: %s\n", cf->endereco[i]);/*O especificador de formato %i É para inteiros mas a variável endereco é um vetor char[50]*/ printf("TELEFONE DO FUNCIONÁRIO: %i\n", cf->telefone[i]); printf("CPF DO FUNCIONÁRIO: %i\n", cf->cpf[i]); printf("CÓDIGO DO CARGO: %i\n", cf->cdc[i]); printf("CÓDIGO DO DEPARTAMENTO: %i\n", cf->cdd[i]); printf("\n\n"); } } int main(){ setlocale(LC_ALL, "portuguese"); FUNCIONARIO cfuncionario; fcadastro(&cfuncionario); exbircf(&cfuncionario); system("pause"); return 0; } Opa, deu certo. Me ajudou bastante aqui. Muito obrigado! :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
finalbreak
Olá pessoal. Estou tendo problemas ao tentar guardar mais de uma informação dentro de uma struct que foi passada como referência. O código:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.