Ir ao conteúdo
  • Cadastre-se

Igor Soares da Paixão

Membro Júnior
  • Posts

    18
  • Cadastrado em

  • Última visita

Reputação

18
  1. 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.
  2. #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.
  3. 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!
  4. Pessoal gostaria de saber a diferença entre esses dois comandos. E quando devo usa-los, se puderam colocar um exemplo também facilitaria muito pra mim, obrigado!
  5. É 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.
  6. Entendi@arfneto vou reformular ele todinho..... Só estou tentando buscar os dados da struct individualmente ainda... Mas obrigado pela dica
  7. 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?
  8. 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(); .....
  9. #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
  10. 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
  11. 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

×
×
  • Criar novo...