sábado, 17 de outubro de 2015

Arquivo - leitura com fread


Programadores de linguagem C tem boas opções com funções que fazem
leitura de arquivos de texto, e uma outra função que
pode ser usada para isto é a função fread();
Aliás, por trabalhar com dados binários o uso de fread(); para leitura
e de fwrite(); para escrita são bem mais recomendados.
ao contrário de outras que trabalham com dados em ASCII,
e que podem provocar perda de desempenho em arquivos maiores.
A função fread(); retorna o número total de elementos lidos,
que pode ser menor do que o que foi especificado na chamada da rotina
se o final do arquivo for atingido ou se ocorrer um erro.
Arquivos binários também podem ser lidos como registros de dados estruturados,
Além disso, uma vez que todos os registros tem o mesmo tamanho,
os dados podem ser acessados de forma aleatória.
A sintaxe de fread (); é:
fread ( &tipo_nome, sizeof ( tamanho ), quantidade, arquivo );
sendo:
A variável tipo_nome recebe o endereço dos dados lidos do arquivo
tamanho é o número de bytes a ser lido. Para calcular isso o programador de C
deve usar o operador sizeof.
quantidade indica quantos itens serão lidos ( cada item do tamanho especificado )
arquivo é um ponteiro para o arquivo aberto anteriormente.
Uma boa prática, aliás sempre uso, é analisar o retorno de fread
para ver se não ocorreram erros. Isto pode ser feito com uma
instrução deste tipo:
if ( fread ( &nome, sizeof ( nome ), 1, arquivo ) != 1 )
  printf("fread não conseguiu ler o arquivo.\n");
Temos no tópico duas imagens relacionadas ao programa,
onde a primeira mostra o programa em execução, e a segunda
mostra o arquivo que criei para ser usado como leitura.

Veja abaixo uma imagem do programa em execução:


Veja abaixo o código do programa:


//Criando uma moldura na tela do dos

int Moldura ( int tam_lin_ini, int tam_lin_fim,

         int tam_ini_col, int tam_fim_col ) {

    int i, c;

    for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {

         for ( c = tam_ini_col; c < tam_fim_col; c++ ) {

             gotoxy ( c, i );

             textbackground ( WHITE );

             printf ( " " );

         }

    }

    return 0;

}


#include <conio.h>
#include <stdio.h>
void Apaga_Fundo ( ) {
     int row, col;
     textbackground ( WHITE );
     for ( row = 3; row <= 22 ; row++ ) {
         for ( col = 3; col < 8 ; col++ ) {
              gotoxy ( col , row );
              printf ( " " );
         }
     }
     for ( row = 4; row <= 22 ; row++ ) {
         for ( col = 74; col < 79 ; col++ ) {
              gotoxy ( col , row );
              printf ( " " );
         }
     }
}
void Janela6 ( ) {
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24 ; lin++ )
         for ( col = 3; col <= 78 ; col++ ) {
              gotoxy ( col , lin );
              textbackground ( WHITE );
              printf ( " " );
         }
     for ( lin = 4; lin <= 21 ; lin++ )
         for ( col = 4; col <= 75 ; col++ ) {
              gotoxy ( col , lin );
              textbackground ( BLACK );
              printf ( " " );
         }
}
int main ( ) {
     textbackground ( BLACK );
     Janela6 ( );
     int i, j;
     system ( "title ARQUIVO - LEITURA COM FREAD" );
     char nome [ 17 ] [ 67 ] = { 0 };
     FILE *arq;
     if ( ( arq = fopen ( "Cesta básica.txt" , "r" ) ) == NULL ) {
         printf ( "Houve um erro na abertura do arquivo" );
         getche ( );
         exit ( 1 );
     }
     if ( fread ( &nome , 1050 , 1 , arq ) != 1 ) {
         printf ( "Houve um erro na leitura do arquivo" );
         getche ( );
         exit ( 1 );
     }
     textcolor ( LIGHTRED );
     gotoxy ( 28 , 3 );
     printf ( "ARQUIVO - LEITURA COM FREAD" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 5 , 5 );
     for ( i = 0; i < 17 ; i++ ) {
         for ( j = 0; j < 67 ; j++ ) {
              printf ( "%c" , nome [ i ] [ j ] );
              textcolor ( WHITE );
         }
     }
     fclose ( arq );
     Apaga_Fundo ( );
     textcolor ( LIGHTRED );
     gotoxy ( 36 , 24 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     exit ( 0 );
     return 0;
}

Nenhum comentário:

Postar um comentário

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