domingo, 14 de setembro de 2014

Fwrite e Fread - Vetor em Arquivo Bin


Para finalizar esta série de exemplos sobre fwrite(); e fread(); apresento este programa
que mostra um vetor sendo carregado por um contador em um laço for, más não é imprimido
onde é criado, isto é, na função void Cria_Arquivo_Vetor( int Vet [ D ] ); Nesta função,
nosso vetor é gravado num arquivo bin por fwrite(); Já o arquivo, é lido por fread();
onde uma cópia é passada para o vetor Vet_or[]; sendo em seguida imprimido por printf();
onde primeiramente é percorrido por um laço for.

Veja duas imagens do programa em execução:



Veja abaixo o código do programa:

#include <stdio.h>
#include <conio.h>
#define D 100
void Janela5(){
    int lin, col;system("color 7F");
    for ( lin = 0; lin <= 36; lin++ ){
        for ( col = 0; col <= 80; col++ ){
            gotoxy( col, lin );
            if ( lin == 2 ){textbackground(BLACK);printf( " ");}
            if ( col == 1 ){textbackground(BLACK);printf(" ");}
            if ( lin == 36 ){textbackground(BLACK);}
            if ( col == 80 ){textbackground(BLACK);printf(" ");}
        }
    }textbackground( BLACK );
}
void inicio( ){    system ("title FWRITE E FREAD - VETOR EM ARQUIVO BIN");
int i;system("cls");do{Janela5();
textcolor(LIGHTRED);gotoxy(25,7);printf("FWRITE E FREAD - VETOR EM ARQUIVO BIN");
textcolor(YELLOW);gotoxy(25,10);printf("Programa desenvolvido por:");
textcolor(LIGHTCYAN);gotoxy(52,10);printf("Samuel Lima");
textcolor(LIGHTGREEN);gotoxy(34,12);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(24,14);printf("DIGITE    PARA SAIR OU   PARA CONTINUAR  ");
textcolor(LIGHTRED);gotoxy(32,14);printf("1");textcolor(LIGHTRED);gotoxy(47,14);printf("2");
gotoxy(41,16);
scanf("%d",&i);fflush(stdin);
if( i == 1 ){textcolor(LIGHTRED);gotoxy(35,20);printf ("MUITO OBRIGADO");Sleep(1800);exit(0);}
if( i == 2 ){system("cls"); return;}
else {textcolor(LIGHTRED);gotoxy(37,20);printf ("\aOPÇÃO ERRADA");Sleep(1800);system("cls");}
}
while(i);
}
void Cria_Arquivo_Vetor( int Vet [ D ] ){
    FILE *arq;int p = 0, i;
    for( i = 1; i <= D; i++ ){
        Vet [ p  ] = i;
        p++;
    }
    if ( ( arq = fopen ("Arquivo.bin", "wb" ) ) == NULL ){
        printf("Houve um erro na criação do arquivo");
        getche();exit(1);
    }
    if ( fwrite ( &Vet, sizeof ( Vet ), 1, arq ) != 1 ){
        printf("Houve um erro na gravação do arquivo");
        getche();exit(1);
    }
    fclose(arq);
}
void Abre_Arquivo_Vetor( int Vet [ D ], int Vet_or [ D ] ){
    FILE *arq;int i = 0;Janela5();
    if ( ( arq = fopen("Arquivo.bin", "rb" ) ) == NULL ){
        printf("Houve um erro na abertura do arquivo");
        getche();exit(1);
    }
    if ( fread ( &Vet_or, sizeof ( Vet_or ), 1, arq ) != 1 ){
        gotoxy(25, i  + 11);printf("\aHouve um erro na leitura do arquivo");
        getche();exit(1);
    }
    textcolor(LIGHTRED);gotoxy(24,3);printf("FWRITE E FREAD - VETOR EM ARQUIVO BIN");
    gotoxy(5, i  + 9);textcolor(LIGHTGRAY);
    for( i = 0; i < D; i++ ){
        printf(" %d ", Vet_or [ i ] );
    }
    fclose(arq);Sleep(1800);
    textcolor(LIGHTRED);gotoxy(35,20);printf ("MUITO OBRIGADO");
    getche();exit(0);
}
int main(){
    int Vet [ D ], Vet_or [ D ];
    inicio( );
    Cria_Arquivo_Vetor( Vet );
    Abre_Arquivo_Vetor( Vet, Vet_or );
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.