
Igor Soares da Paixão
Membro Júnior-
Posts
18 -
Cadastrado em
-
Última visita
Reputação
18-
Olá Senhores(a). Estou com uma dúvida a semanas e não consigo tirar. Estou desenvolvendo um código em C para um trabalho da faculdade e preciso salvar dados de um vetor de struct em arquivo txt e depois acessar eles e mostrar na tela. A struct contém nome, celular, idade. A ideia é salvar várias dados com estas informações, e depois acessá-los individualmente. Como eu faço isso? Exemplos são bem vindos.
-
C Armazenar dados de uma struct em txt, depois ler e mostrar na tela
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
#include <stdio.h> #include <stdlib.h> #include <locale.h> void main(){ setlocale(LC_ALL, ""); typedef struct{ char nome[15]; int idade; char telefone[12]; }Cpessoa; //Cadastro Pessoa Cpessoa pessoa[10]; int i = 0, menu; FILE *arquivo; arquivo = fopen("pessoa.txt", "ab"); printf("1 - Cadastro\n2 - Consultar\n"); printf("Selecione a opção desejada: "); scanf("%d", &menu); switch(menu){ case 1: fflush(stdin); printf("Digite os dados da pessoa abaixo.\n\n"); printf("Nome: "); fgets(pessoa[i].nome, 15, stdin); printf("Idade: "); scanf("%d", &pessoa[i].idade); fflush(stdin); printf("Telefone: "); fgets(pessoa[i].telefone, 12, stdin); fwrite(&pessoa[i], sizeof(Cpessoa), 1, arquivo); case 2: arquivo = fopen("cadastro_paciente.txt", "rb"); while(fread(&pessoa[i], sizeof(Cpessoa), 1, arquivo)){ printf("%s", pessoa[i].nome); printf("%d", pessoa[i].idade); printf("%s", pessoa[i].telefone); } } } Está sendo bem difícil kkk, como eu leio os dados e mostro na tela? Não sei se está correto o jeito de gravar também. -
C Armazenar dados de uma struct em txt, depois ler e mostrar na tela
Igor Soares da Paixão postou um tópico em C/C#/C++
Preciso de uma ajuda. Como eu faço para salvar dados de uma struct em txt, ler e mostrar na tela do usuário? Gostaria de salvar nome, idade e telefone. Depois fazer uma busca os dados salvos pelo nome da pessoa. Dá pra fazer isso? Exemplos me ajuda mais a entender. Valeu! -
C Qual a diferença da função STRUCT para TYPEDEF STRUCT? E quando devo usar?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
@arfneto Obrigado pela resposta. -
C Qual a diferença da função STRUCT para TYPEDEF STRUCT? E quando devo usar?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
Obrigado pelas respostas!! -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
Sim, @arfneto. Obrigado pelas dicas!! -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
É porque o meu objetivo é gravar os dados em arquivo e depois fazer uma busca do arquivo mas essa busca eu gostaria de fazer por exemplo, pelo nome. -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
Entendi@arfneto vou reformular ele todinho..... Só estou tentando buscar os dados da struct individualmente ainda... Mas obrigado pela dica -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
Tem algum problema de todos os campos serem char na minha estrutura? Qual formato de variável eu deveria usar para ler um número grande? Tipo o CPF? -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
Esqueci de colocar ela, perdoe-me.. void menuprincipal(){ setlocale(LC_ALL, ""); // VARIÁVEL PARA ARMAZENAR A OPÇÃO DO MENU int opcao; do{ printf("| MENU PRINCIPAL DO SISTEMA |\n"); printf("1 - Cadastro de pacientes.\n"); printf("2 - Cadastro de médicos.\n"); printf("3 - Consulta de cadastros.\n"); printf("4 - Agendamento de consultas.\n"); printf("5 - Cancelamento de consultas.\n"); printf("6 - Agenda do dia.\n"); printf("7 - Cadastro de funcionários.\n"); printf("8 - Sugestões, reclamações e elogios.\n"); printf("9 - Relatórios.\n"); printf("10 - Sair\n"); printf("Digite a opção desejada: "); scanf("%d", &opcao); system("cls"); switch(opcao){ case 1: cadastroPaciente(); break; case 2: break; case 3: consultaCadastro(); break; case 10: printf("\n\n Finalizando...."); sleep(3); exit(1); default: printf("Opção inválida! Tente Novamente.\n\n"); } }while(opcao!=10); adicionado 0 minutos depois Esqueci de colocar ela, perdoe-me.. @devair1010 void menuprincipal(){ setlocale(LC_ALL, ""); // VARIÁVEL PARA ARMAZENAR A OPÇÃO DO MENU int opcao; do{ printf("| MENU PRINCIPAL DO SISTEMA |\n"); printf("1 - Cadastro de pacientes.\n"); printf("2 - Cadastro de médicos.\n"); printf("3 - Consulta de cadastros.\n"); printf("4 - Agendamento de consultas.\n"); printf("5 - Cancelamento de consultas.\n"); printf("6 - Agenda do dia.\n"); printf("7 - Cadastro de funcionários.\n"); printf("8 - Sugestões, reclamações e elogios.\n"); printf("9 - Relatórios.\n"); printf("10 - Sair\n"); printf("Digite a opção desejada: "); scanf("%d", &opcao); system("cls"); switch(opcao){ case 1: cadastroPaciente(); break; case 2: break; case 3: consultaCadastro(); break; case 10: printf("\n\n Finalizando...."); sleep(3); exit(1); default: printf("Opção inválida! Tente Novamente.\n\n"); } }while(opcao!=10); adicionado 1 minuto depois Foi como te falei, o restante do código está funcionando normal só estou me complicando nessa função consultaCadastro(); ..... -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> int main(){ setlocale(LC_ALL, ""); printf ("Inicializando sistema..."); sleep(3); system("cls"); login(); return 0; } void login(){ char loginA[7], senhaA[20], dloginA[9]="adminA", dsenhaA[20]="unipadminA"; char loginB[7], senhaB[20], dloginB[9]="adminB", dsenhaB[20]="unipadminB"; char loginC[7], senhaC[20], dloginC[9]="adminC", dsenhaC[20]="unipadminC"; char novasenha[20]; int unidade, redefinir_senha; volta: printf("\nOpções disponíveis: 1, 2 e 3 ou digite 4 para redefinir a senha."); printf("\nEscolha uma das opções disponíveis: "); scanf("%d", &unidade); switch(unidade){ case 1: printf("Você escolheu a unidade %d!\n", unidade); printf("LOGIN: "); scanf("%s",loginA);/*aqui você digita o login*/ printf("SENHA: "); scanf("%s",senhaA);/*aqui você digita a senha*/ if((strcmp(dloginA,loginA) == 0) && (strcmp(dsenhaA,senhaA) == 0)){ printf("\n\nLogin efetuado com sucesso!\n"); }else{ printf("Usuário ou senha inválida!\n\n"); goto volta; }; break; case 2: printf("Você escolheu a unidade %d!\n", unidade); printf("LOGIN: "); scanf("%s",loginB);/*aqui você digita o login*/ printf("SENHA: "); scanf("%s",senhaB);/*aqui você digita a senha*/ if((strcmp(dloginB,loginB) == 0) && (strcmp(dsenhaB,senhaB) == 0)){ printf("\n\nLogin efetuado com sucesso!\n"); } else{ printf("Usuário ou senha inválida!\n\n"); goto volta; }; break; case 3: printf("Você escolheu a unidade %d!\n", unidade); printf("LOGIN: "); scanf("%s",loginC);/*aqui você digita o login*/ printf("SENHA: "); scanf("%s",senhaC);/*aqui você digita a senha*/ if((strcmp(dloginC,loginC) == 0) && (strcmp(dsenhaC,senhaC) == 0)){ printf("\n\nLogin efetuado com sucesso!\n"); } else{ printf("Usuário ou senha inválida!\n\n"); goto volta; } break; case 4: printf("Para redefinir sua senha, digite sua unidade: "); scanf("%d", &redefinir_senha); if(redefinir_senha == 1){ printf("Digite sua nova senha: "); scanf("%s", &novasenha); novasenha == senhaA; printf("Sua senha foi alterada!"); login(); } default: printf("Opção inválida!\n"); goto volta; break; }; printf ("Carregando o sistema..."); sleep(3); system("cls"); menuprincipal(); getch(); } typedef struct{ char nomecompleto[255]; char datanasc[255]; char CPF[255]; char RG[255]; char telefone[255]; char email[255]; char endereco[255]; char cidadeEestado[255]; char validacar[255]; char convenio[255]; char carteirinha[255]; }Cpaciente; Cpaciente paciente[MAXPACIENTES]; int contP = 0; int posicao; void cadastroPaciente(){ setlocale(LC_ALL, ""); FILE *arquivo; arquivo = fopen("cadastro_paciente.bin", "ab"); int dados, retornar, i; char fpag = 'P' || 'C'; char formapag[2]; if(arquivo == NULL){ printf("Erro ao abrir o arquivo."); }; // INICIALIZAÇÃO DA STRUCT EM VETORES //ARMAZENANDO DADOS NAS STRUCT for(contP = 0; contP < MAXPACIENTES; contP++){ printf("Você está na tela de cadastramento de pacientes.\n\n"); fflush(stdin); printf("Digite o CPF: "); fgets(paciente[contP].CPF, 255, stdin); printf("Digite o Nome Completo: "); fgets(paciente[contP].nomecompleto, 255, stdin); // Função que lê o nome printf("Digite a data de nascimento(EX: DD/MM/AAAA): "); fgets(paciente[contP].datanasc, 255, stdin); // Função que lê a data de nasc printf("Digite o CPF novamente: "); fgets(paciente[contP].CPF, 255, stdin); fflush(stdin); printf("Digite o número do RG: "); fgets(paciente[contP].RG, 255, stdin); // Função que lê o RG printf("Digite o número do Telefone/Celular: "); fgets(paciente[contP].telefone, 255, stdin); // Função que lê o num de telefone printf("Digite o email: "); fgets(paciente[contP].email, 255, stdin); // Função que lê o email printf("Digite o endereço completo(EX: Rua, numCasa - Bairro): "); fgets(paciente[contP].endereco, 255, stdin); // Função que lê o endereço printf("Digite a Cidade e o Estado(EX: Cidade/Estado): "); fgets(paciente[contP].cidadeEestado, 255, stdin); printf("Particular ou Convênio? Informe com P ou C: "); scanf("%c", &fpag); // Função que lê a forma de pagamento informada pelo printf fpag = toupper(fpag); if(fpag == 'P'){ printf("Digite D para Dinheiro ou C para Cartão.\n"); printf("Forma de pagamento: "); scanf("%s", formapag); // Função que lê a forma de pagamento informada pelo printf }else if(fpag == 'C'){ printf("Nome do Convênio: "); scanf("%s", paciente[contP].convenio); // Função que lê o nome do convenio printf("Digite o número da carteirinha: "); scanf("%s", &paciente[contP].carteirinha); // Função que lê o num da carteirinha printf("Data de validade da carteirinha(DD/MM/AAAA), não inserir se já estiver vencida!: "); scanf("%s", paciente[contP].validacar); // Função que lê a validade da carteirinha } printf("Os dados estão corretos? Digite 1 para SIM ou 2 para NÃO: "); scanf("%d", &dados); if(dados == 1){ fwrite(&paciente[contP], sizeof(Cpaciente), 1, arquivo); contP = contP + 1; fclose(arquivo); printf("O paciente foi cadastrado com sucesso!\n"); }else if(dados == 2){ printf("Os dados não foram cadastrados!\n"); } printf("Voltar ao menu principal? Digite 1 ou para sair digite 0: "); scanf("%d", &retornar); if(retornar == 1){ system("cls"); menuprincipal(); }else if(retornar == 0){ exit(1); } } } void consultaCadastro(FILE *arquivo){ arquivo = fopen("cadastro_paciente.txt","rb"); char CPF[255]; printf("VOCÊ ESTÁ NA TELA DE CONSULTAR CADASTRO\n\n"); printf("Para encontrar o registro, digite o número do CPF: "); fflush(stdin); gets(CPF); const int info = fread(&paciente, sizeof(Cpaciente), MAXPACIENTES, arquivo); if (info != MAXPACIENTES) { /* Gerenciar o erro adequadamente aqui */ printf("ERRO"); } for(contP = 0; contP < MAXPACIENTES; contP++){ if(strcmp(CPF, paciente[contP].CPF)== 0){ printf("Registro encontrado!\n"); posicao = contP; }else{ posicao = -1; } if(posicao = -1) { printf(" \n Registro não encontrado! "); }else{ printf(" \n Registro Encontrado!\n"); printf(": %s", paciente[posicao].CPF); } } } Aí está o código completo, foi como eu disse sou iniciante em C e me perdoe se não pego essas dicas/sugestões que você me deu fácil.....Verifique se eu estou fazendo da maneira correta.@devair1010 -
C Como faço para listar pessoas?
Igor Soares da Paixão respondeu ao tópico de Igor Soares da Paixão em C/C#/C++
Fiz isso aí que você me sugeriu mas não consegui o retorno desejado =( adicionado 2 minutos depois Eu só estou com problema nessa parte de mandar a função listar(); o restante do código eu fiz e está funcionando normal kk -
Como faço para listar as pessoas? Eu armazenei os dados em uma struct e coloquei em arquivo .bin e agora eu quero ler esses dados e imprimir na tela do usuário. Como eu faço? Eu vi num fórum que eu teria que criar um for para "dar o inicio" de gravação de dados. Não sei se isso é realmente assim, comecei a escrever código em C a pouco tempo e não sei nada de programação. #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> #define MAXPACIENTES 150 // DADOS DO PACIENTE typedef struct{ char nomecompleto[255]; char datanasc[255]; char CPF[255]; char RG[255]; char telefone[255]; char email[255]; char endereco[255]; char cidadeEestado[255]; char validacar[255]; char convenio[255]; char carteirinha[255]; }Cpaciente; Cpaciente paciente[MAXPACIENTES]; int contP = 0; int posicao; void cadastroPaciente(){ setlocale(LC_ALL, ""); FILE *arquivo; arquivo = fopen("cadastro_paciente.bin", "ab"); int dados, retornar, i; char fpag = 'P' || 'C'; char formapag[2]; if(arquivo == NULL){ printf("Erro ao abrir o arquivo."); }; // INICIALIZAÇÃO DA STRUCT EM VETORES for(contP = 0; contP <MAXPACIENTES; contP++){ strcpy(paciente[contP].carteirinha, "NULL"); strcpy(paciente[contP].cidadeEestado, "NULL"); strcpy(paciente[contP].convenio, "NULL"); strcpy(paciente[contP].CPF, "NULL"); strcpy(paciente[contP].datanasc, "NULL"); strcpy(paciente[contP].email, "NULL"); strcpy(paciente[contP].endereco, "NULL"); strcpy(paciente[contP].nomecompleto, "NULL"); strcpy(paciente[contP].RG, "NULL"); strcpy(paciente[contP].telefone, "NULL"); strcpy(paciente[contP].validacar, "NULL"); } //ARMAZENANDO DADOS NAS STRUCT for(contP = 0; contP < MAXPACIENTES; contP++){ printf("Você está na tela de cadastramento de pacientes.\n\n"); fflush(stdin); printf("Digite o CPF: "); fgets(paciente[contP].CPF, 255, stdin); printf("Digite o Nome Completo: "); fgets(paciente[contP].nomecompleto, 255, stdin); // Função que lê o nome printf("Digite a data de nascimento(EX: DD/MM/AAAA): "); fgets(paciente[contP].datanasc, 255, stdin); // Função que lê a data de nasc printf("Digite o CPF novamente: "); fgets(paciente[contP].CPF, 255, stdin); fflush(stdin); printf("Digite o número do RG: "); fgets(paciente[contP].RG, 255, stdin); // Função que lê o RG printf("Digite o número do Telefone/Celular: "); fgets(paciente[contP].telefone, 255, stdin); // Função que lê o num de telefone printf("Digite o email: "); fgets(paciente[contP].email, 255, stdin); // Função que lê o email printf("Digite o endereço completo(EX: Rua, numCasa - Bairro): "); fgets(paciente[contP].endereco, 255, stdin); // Função que lê o endereço printf("Digite a Cidade e o Estado(EX: Cidade/Estado): "); fgets(paciente[contP].cidadeEestado, 255, stdin); printf("Particular ou Convênio? Informe com P ou C: "); scanf("%c", &fpag); // Função que lê a forma de pagamento informada pelo printf fpag = toupper(fpag); if(fpag == 'P'){ printf("Digite D para Dinheiro ou C para Cartão.\n"); printf("Forma de pagamento: "); scanf("%s", formapag); // Função que lê a forma de pagamento informada pelo printf }else if(fpag == 'C'){ printf("Nome do Convênio: "); scanf("%s", paciente[contP].convenio); // Função que lê o nome do convenio printf("Digite o número da carteirinha: "); scanf("%s", &paciente[contP].carteirinha); // Função que lê o num da carteirinha printf("Data de validade da carteirinha(DD/MM/AAAA), não inserir se já estiver vencida!: "); scanf("%s", paciente[contP].validacar); // Função que lê a validade da carteirinha } printf("Os dados estão corretos? Digite 1 para SIM ou 2 para NÃO: "); scanf("%d", &dados); if(dados == 1){ fwrite(&paciente[contP], sizeof(Cpaciente), 1, arquivo); contP = contP + 1; fclose(arquivo); printf("O paciente foi cadastrado com sucesso!\n"); }else if(dados == 2){ printf("Os dados não foram cadastrados!\n"); } printf("Voltar ao menu principal? Digite 1 ou para sair digite 0: "); scanf("%d", &retornar); if(retornar == 1){ system("cls"); menuprincipal(); }else if(retornar == 0){ exit(1); } } } void consultaCadastro(){ FILE *arquivo; arquivo = fopen("cadastro_paciente.bin","rb"); char CPF[255]; printf("VOCÊ ESTÁ NA TELA DE CONSULTAR CADASTRO\n\n"); printf("Para encontrar o registro, digite o número do CPF: "); fflush(stdin); gets(CPF); for(contP = 0; contP < MAXPACIENTES; contP++){ while( fread(&paciente[contP], sizeof(Cpaciente), 1, arquivo)){ if(strcmp(CPF, paciente[contP].CPF)== 0){ printf("Registro encontrado!\n"); posicao = contP; }else{ posicao = -1; } if(posicao = -1) { printf(" \n Registro não encontrado! "); }else{ printf(" \n Registro Encontrado!\n"); printf("CPF: %s", paciente[posicao].CPF); } } } }
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