Skip to content

Instantly share code, notes, and snippets.

@danilodorgam
Created May 8, 2015 02:42
Show Gist options
  • Save danilodorgam/b0c743f38400b4a6388d to your computer and use it in GitHub Desktop.
Save danilodorgam/b0c743f38400b4a6388d to your computer and use it in GitHub Desktop.
/*
Objetivo: Ler uma estrutura no arquivo em binario
parametro: endereço da estrutura e do contador de candidatas
retorno: void
*/
void lerArquivoBinario(Candidata *candidata, int *contaMiss){
FILE *arq;
if((arq=abreArquivo("backup.txt","rb","S"))!=NULL){
fseek ( arq , 1 , SEEK_SET );
while(!feof(arq)|| *contaMiss == MAX_MODELOS){
if(fread (&candidata[*contaMiss],sizeof(candidata),1,arq)==1){
printf("%i %s %f\n",candidata[*contaMiss].registro, candidata[*contaMiss].nome, candidata[*contaMiss].peso);
*contaMiss = *contaMiss+1;
}
}
getch();
fclose(arq);
}
}
/*
Objetivo: Gravar uma estrutura em um arquivo binario predefinido
parametros: Estrutura
retorno: 0 para erro na gravação 1 para sucesso na gravação
*/
int gravarArquivoBin(Candidata *candidata, int *contMiss){
int flag=1, FlagArq=0, cont; //FlagArq = 0 arquivo binario 1 = arquivo texto
FILE * arq;
printf("CONTMISS %i",*contMiss);
getch();
if((arq=abreArquivo("backup.txt","wb","S"))!=NULL){
fwrite(&FlagArq,sizeof(int),1,arq);
for(cont = 0; cont < *contMiss; cont++){
fwrite(&candidata[cont],1,sizeof(Candidata),arq);
}
}
/*if(fwrite(&candidata[cont],1,sizeof(Candidata),arq)==3){
}else{
flag = 0;
printf("Verifique se voce tem espaco em disco ou se tem algum programa usando o arquivo backup.txt\n");
getch();
}
}
}else{
flag = 0;
printf("Verifique se voce tem espaco em disco ou se tem algum programa usando o arquivo backup.txt\n");
getch();
}*/
fclose(arq);
}
@masterl
Copy link

masterl commented May 8, 2015

Dá para reduzir a de gravar assim:

int gravarArquivoBin(Candidata *candidata, int *contMiss)
{
    int flag=1, FlagArq=0, cont; //FlagArq = 0 arquivo binario 1 = arquivo texto
    FILE * arq;
    printf("CONTMISS %i",*contMiss);
    getch();

    if( (arq=abreArquivo("backup.txt","wb","S")) != NULL)
    {
        fwrite(&FlagArq,sizeof(int),1,arq);

        fwrite(candidata,sizeof(Candidata),*contMiss,arq);
    }

    fclose(arq);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment