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.