Paulo Jardim Postado Novembro 26, 2010 Denunciar Share Postado Novembro 26, 2010 Estou tentando fazer um programa que armazene dados num bloco txt e depois os acesso,Entretando estou tendo dificuldade em fazer a leitura desses dados como se fosse um banco de dadosEX: quero no menu 1 ( case 1 ) o usuário escolha a opção de mulher que ele quer,ou seja, se ele escolher morena e depois olhos claros, quero que mostre pra ele apenas as mulhres com essas caracteristicas.Tb quero ordernar por ordem alfabetica mais ta confuso isso.Não preciso do código pronto só quero entender como faço isso.Obrigado desde já#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <conio.h> #include <stdlib.h> int main () { typedef struct { char nome[15]; char cor_cabelo[10]; char cor_olho[15]; float valor_hora; }dados; system("color 1F"); FILE *garotas; //Variaveis int op=0, op2=0, op3=0, op4=0; char *cor_cabelo; char *cor_olho; dados *mulher; dados banco; int n_garotas =0; int troca, i,j; //Menu system("cls"); printf("\n\t\t\tNome Programa\n\n"); printf("\n[1] Procura Perssonalizada"); printf("\n[2] Cadastro de Garotas"); printf("\n[3] Listar todas as Meninas"); printf("\n[4] Sair\n"); printf("\n\n Digite a opcao desejada -> "); scanf("%d", &op); //Escolha de opção switch (op) { case 1: garotas = fopen("garotas.txt", "r"); system("cls"); n_garotas=0; while(!feof(garotas)) { fscanf(garotas, "%d", &banco.nome); fscanf(garotas, "%s", &banco.cor_cabelo); fscanf(garotas, "%s", &banco.cor_olho); fscanf(garotas, "%f", &banco.valor_hora); n_garotas++; // conta quantos contatos tem } printf("%d garotas", n_garotas-1); break; case 2: garotas = fopen("garotas.txt", "a"); system("cls"); do { system("cls"); printf("\n\t\t\tCadastro de Garotas\n"); printf("\nDigite o Nome da Garota: "); fflush(stdin); gets(banco.nome); printf("Digite a Cor do Cabelo: \n"); printf("[1] Morena \n"); printf("[2] Loira \n"); printf("[3] Ruiva "); scanf("%d", &op3); // transformar o inteiro na String Respectiva. if (op3 == 1); cor_cabelo = "Loira"; if (op3 == 2); cor_cabelo = "Morena"; if (op3 == 3); cor_cabelo = "Ruiva"; printf("Cordo Olho\n [1] CLaro [2] Escuro: "); op3 = 0; scanf("%d", &op3); if (op3 == 1); cor_olho = "Olhos CLaros"; if (op3 == 2); cor_olho = "Olhos Escuros"; //copiar os valores para a struct strcpy (banco.cor_cabelo, cor_cabelo); strcpy (banco.cor_olho, cor_olho); printf("Valor Cobrado: "); scanf("%f", &banco.valor_hora); //Inserir os dados no TXT fprintf(garotas, "\n%s %s %s %f", banco.nome, banco.cor_cabelo, banco.cor_olho, banco.valor_hora); fclose(garotas); printf("\nDeseja Cadastrar outra Cliente? [1] Sim e [2] não\n"); scanf("%d", &op2); }while (op2 == 1); main(); break; } printf("\n\n"); system("Pause"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nooty Postado Novembro 27, 2010 Denunciar Share Postado Novembro 27, 2010 "Entretando estou tendo dificuldade em fazer a leitura desses dados como se fosse um banco de dados"Tu estás armazenando os dados em modo texto isso torna o processo muito mais difícil, é muito mais fácil tu armazenar uma struct com o arquivo aberto em modo binario e depois tu apenas ler as struct de volta do que tu ficar lendo nome por nome... Ainda mais que tu quer implementar - "usuário escolha a opção de mulher que ele quer" e ordenação.Para ordenar tu teria que ter o numero de cadastros, ler e depois ordenar ou salvar já ordenado.T+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Jardim Postado Novembro 28, 2010 Autor Denunciar Share Postado Novembro 28, 2010 Brigado pela Dica, entretanto ainda estou um pouco perdido, poderia me esclarecer como faço isso?obrigadoSe não der desse jeito estava pensando em jogar num Banco MYSQL será que resolve? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nooty Postado Novembro 29, 2010 Denunciar Share Postado Novembro 29, 2010 Brigado pela Dica, entretanto ainda estou um pouco perdido, poderia me esclarecer como faço isso?Bom tu pode utilizar duas funções conhecidas em c para ler e escrever um struct são elas fwritehttp://www.cplusplus.com/reference/clibrary/cstdio/fwrite/efreadhttp://www.cplusplus.com/reference/clibrary/cstdio/fread/Se não der desse jeito estava pensando em jogar num Banco MYSQL será que resolve?Com certeza ira te poupar esforço e dor de cabeça além de deixar teus dados mais seguro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Jardim Postado Dezembro 3, 2010 Autor Denunciar Share Postado Dezembro 3, 2010 Bom galera o trabalho ficou quase perfeito, utilizei filtros e tudo mais...entretanto agora só tenho uma dúvida...como faço pra deletar apenas uma linha específica do txt?case 7 : garotas = fopen("garotas.txt", "rb"); // Listar Garotas system("color 5F"); n_garotas=0; system("cls"); printf("\n\t\t\tDigite o nome da Garota que deseja deletar\n\n\n"); fflush(stdin); gets(del); fseek (garotas , 0 , SEEK_END); tamfile = ftell (garotas); rewind (garotas); if (tamfile == 0) printf ("\n\n\t\tVc não tem contatos, favor cadastrar"); else while(!feof(garotas)) { fscanf(garotas, "%s", &banco.nome); for(i=0;banco.nome[i]!='';i++) if(banco.nome[i]=='_') banco.nome[i]=' '; fscanf(garotas, "%s", &banco.corcabelo); for(i=0; banco.corcabelo[i]!='';i++) if (banco.corcabelo[i]== '_') banco.corcabelo[i]=' '; fscanf(garotas, "%s", &banco.cor_olho); for(i=0; banco.cor_olho[i]!='';i++) if (banco.cor_olho[i]== '_') banco.cor_olho[i]=' '; fscanf(garotas, "%f", &banco.valor_hora); qtd_letras = strlen (del); for(qtd_letras+1; qtd_letras <= 30; qtd_letras++) del[qtd_letras] = ('_'); for(i=0; del[i]!= ''; i++) if (del[i] == '_') del[i] = ' '; if (strcmp (banco.nome, del) == 0 ) { printf("\n\n\nDeletando contato\n\n"); //aqui que o bixo pegou printf("%s | %s | %s | %.2f \n", banco.nome, banco.corcabelo, banco.cor_olho,banco.valor_hora); } } fclose(garotas); getch(); main(); break; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Jardim Postado Dezembro 13, 2010 Autor Denunciar Share Postado Dezembro 13, 2010 Galera terminei o programa...Depois de 1.200 linhas de códico.Se alguém precisar do código fonte ou tirar dúvidas de como fazer pode me mandar e-mail:inf-paulo@bol.com.br Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Jardim
Estou tentando fazer um programa que armazene dados num bloco txt e depois os acesso,
Entretando estou tendo dificuldade em fazer a leitura desses dados como se fosse um banco de dados
EX: quero no menu 1 ( case 1 ) o usuário escolha a opção de mulher que ele quer,
ou seja, se ele escolher morena e depois olhos claros, quero que mostre pra ele apenas as mulhres com essas caracteristicas.
Tb quero ordernar por ordem alfabetica mais ta confuso isso.
Não preciso do código pronto só quero entender como faço isso.
Obrigado desde já
Link para o comentário
Compartilhar em outros sites
5 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.