kaleu50 0 Denunciar post Postado Outubro 28, 2015 void separa(FILE *arquivo, FILE *f1, FILE *f2){ CADA cad; char ch; int ac; if ((arquivo = fopen("cadastro.dat","r")) == NULL){ printf("\n ERRO!!!!"); exit(1); } if ((f1 = fopen("homens.dat","w")) == NULL){ printf("\n ERRO!!!!"); exit(1); } if ((f2 = fopen("mulheres.dat","w")) == NULL){ printf("\n ERRO!!!!"); exit(1); } //gets(sexo); while(fread(&cad, sizeof(CADA), 1, arquivo)== 1 && !ac){ ch = getc(arquivo); if(strcmp(cad.sexo, "f")==0){ putc(ch, f1); printf("\nCopiado com sucesso!! IF"); ac=1; } } fclose(arquivo); fclose(f1); fclose(f2); printf("\nCopiado com sucesso!!"); } o tentando fazer essa função pra comprar o valor de um arquivo e caso o sexo sexa masculino salvar no arquivo masculino caso seja feminino no arquivo feminino mas nao consigo fazer a comparação Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 28, 2015 A função é case sensitive. "f" != "F". Fread lê bytes puros. Use fscanf ou fgets se vc quiser entrada formatada. Compartilhar este post Link para o post Compartilhar em outros sites
kaleu50 0 Denunciar post Postado Outubro 28, 2015 A função é case sensitive. "f" != "F". Fread lê bytes puros. Use fscanf ou fgets se você quiser entrada formatada. que é case sensitive eu sei que tava colocando f mas mesmo assim nao acha tentei varias formas Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 28, 2015 Como está o arquivo? Compartilhar este post Link para o post Compartilhar em outros sites
kaleu50 0 Denunciar post Postado Outubro 29, 2015 Como está o arquivo? esse é todo o codigo do arquivo #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <string.h> struct CADA{ char nome[40], sexo[1], corolhos[10], data[10]; float altura, peso; }cad; void cadastra(FILE *arquivo){ CADA cad; char numstr[61],resp; if ((arquivo = fopen("cadastro.dat","wb")) == NULL){ printf("\n Erro na abertura!!"); exit(1); } do{ printf("\n Nome: "); gets(cad.nome); printf("\n Sexo: (m/f)"); gets(cad.sexo); printf("\n Cor Olhos: "); gets(cad.corolhos); printf("\n Data: "); gets(cad.data); printf("\n Altura: "); gets(numstr); cad.altura = atof(numstr); printf("\n Peso: "); gets(numstr); cad.peso = atof(numstr); fwrite(&cad, sizeof(CADA), 1, arquivo); printf("\n Deseja cadastrar mais?"); do { resp = toupper(getch()); } while (resp != 'S' && resp != 'N'); }while(resp=='S'); fclose(arquivo); } void separa(FILE *arquivo, FILE *f1, FILE *f2){ CADA cad; char ch; int ac,aux; if ((arquivo = fopen("cadastro.dat","r")) == NULL){ printf("\n ERRO!!!!"); exit(1); } if ((f1 = fopen("homens.dat","w")) == NULL){ printf("\n ERRO!!!!"); exit(1); } if ((f2 = fopen("mulheres.dat","w")) == NULL){ printf("\n ERRO!!!!"); exit(1); } aux = strcmp(cad.sexo, "f"); while(fread(&cad, sizeof(CADA), 1, arquivo)== 1 && !ac){ ch = getc(arquivo); if(aux ==0 ){ putc(ch, f1); printf("\nCopiado com sucesso!! IF"); ac=1; } } fclose(arquivo); fclose(f1); fclose(f2); printf("\nCopiado com sucesso!!"); } int main (){ FILE *arquivo; FILE *f1; FILE *f2; cadastra(arquivo); separa(arquivo,f1,f2); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 29, 2015 ...E o arquivo dos dados? Compartilhar este post Link para o post Compartilhar em outros sites
kaleu50 0 Denunciar post Postado Outubro 29, 2015 ...E o arquivo dos dados? é um arquivo chamado cadastro.dat o que quer saber? não entendi ... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 29, 2015 O que tem dentro dele. Qual é o formato da coisa. Compartilhar este post Link para o post Compartilhar em outros sites
kaleu50 0 Denunciar post Postado Outubro 29, 2015 O que tem dentro dele. Qual é o formato da coisa. g ^ €‚A œ(@ ff f A'@ €? salva isso dentro dele eu salvei coisas aleatorias para teste Compartilhar este post Link para o post Compartilhar em outros sites