quarta-feira, 10 de setembro de 2014

Fwrite e Fread - Matriz em Arquivo bin

Podemos gravar dados num arquivo binário facilmente usando a função fwrite();
da biblioteca padrão do C.
Primeiro o arquivo deve ser criado, e para isto declaramos previamente um ponteiro para arquivo,
ex: *FILE *arq;
No exemplo proposto aqui,o arquivo binário foi criado no modo gravação, e o interessante é que ele apaga qualquer conteúdo antes contido.
Para a leitura do nosso arquivo binário criado por fwrite(); usei a função fread();
 também da biblioteca stdio.h,
e o uso se torna simples, basta seguir o exemplo deste código.
Não cabe aqui, entrar em detahes sobre estas duas fantásticas funções citadas acima,isto fica por conta de qualquer interessado no assunto.


Veja uma imagem do programa em execução:


Veja abaixo o código do programa:


#include <stdio.h>
#include <conio.h>
void Janela5(){
    int lin, col;system("color 5F");
    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 );
}
char  Nomes_Alunos[ 11 ] [ 17 ] = { {"João Henrique"},
        {"Amanda Santos"},
        {"Patrícia Gomes"},
        {"Ricardo Souza"},
        {"Cláudia Ferraz"},
        {"Rafaela Pimentel"},
        {"Samuel Júnior"},
        {"Sandro Rúbens"},
        {"Lúcia Paola"},
        {"Luíz Manolo"},
        {"Estér Guimarães"} };
void Cria_Arquivo_Mat_String(){
    FILE *arq;int i;
    if ( ( arq = fopen("Arquivo.bin", "wb" ) ) == NULL ){ // Abre arquivo binário para escrita
        printf("Houve um erro na criação do arquivo");
        getche();exit(1);
    }
    for( i = 0; i <= 10; i++ ){
        if ( fwrite ( &Nomes_Alunos, sizeof ( char ), 1, arq ) != 1 ){
            printf("Houve um erro na gravação do arquivo");
            getche();exit(1);
        }
    }
    fclose ( arq );                                    // Fecha o arquivo
}
void Abre_Arquivo_Mat_String(){
    FILE *arq;int i;
    if ( ( arq = fopen("Arquivo.bin", "rb" ) ) == NULL ){ // Abre o arquivo novamente para leitura
        printf("Houve um erro na abertura do arquivo");
        getche();exit(1);
    }
    for( i = 0; i <= 10; i++ ){
        if ( fread ( &Nomes_Alunos, sizeof( char ), 1, arq ) != 1 ){
            printf("Houve um erro na leitura do arquivo");
            getche();exit(1);
        }
        textcolor(LIGHTGRAY);gotoxy(35, i  + 9);
        printf("%s", Nomes_Alunos [ i ] );
    }
    fclose(arq);
    textcolor(LIGHTRED);gotoxy(35,22);printf ("MUITO OBRIGADO");getche();exit(0);
}
int main(){
    Janela5();
    system ("title FWRITE E FREAD - MATRIZ EM ARQUIVO BIN");
    textcolor(LIGHTRED);gotoxy(25,3);printf("FWRITE E FREAD - MATRIZ EM ARQUIVO BIN");
    textcolor(YELLOW);gotoxy(25,5);printf("Programa desenvolvido por:");
    textcolor(LIGHTCYAN);gotoxy(52,5);printf("Samuel Lima");
    textcolor(LIGHTGREEN);gotoxy(34,7);printf("sa_sp10@hotmail.com");
    Cria_Arquivo_Mat_String();
    Abre_Arquivo_Mat_String();
}

Nenhum comentário:

Postar um comentário

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