Podemos escolher posições aleatórias e específica num arquivo, isto mesmo, é possível ler dados especificados dentro de um arquivo, para isto, basta usar a função fseek(); da biblioteca stdio.h do c.
O indicador de posição é movimentado byte a byte dentro de um arquivo.
A sintaxe da função fseek é: fseek ( Arquivo, total_em_bytes, origem );
Arquivo é um ponteiro para arquivo, total_em_bytes representa a quantidade
de bytes que o indicador de posição será movimentado, e origem é a partir
de onde iniciará o indicador de posição.
Para usar a função fseek, devemos usar uma das seguintes macros:
SEEK_SET para a origem no início do arquivo
SEEK_CUR para a origem na posição atual do indicador de posição
SEEK_END para a origem no final do arquivo
Todas estas macros estão incluidas na biblioteca stdio.h.
Neste código trata-se de mostrar o uso correto da macro
SEEK_SET junto com a função fseek();
O exemplo é de uma clareza impressionate, vale apena testar este código.
Veja duas imagens do programa em execução:
Veaja abaixo o código do programa:
O indicador de posição é movimentado byte a byte dentro de um arquivo.
A sintaxe da função fseek é: fseek ( Arquivo, total_em_bytes, origem );
Arquivo é um ponteiro para arquivo, total_em_bytes representa a quantidade
de bytes que o indicador de posição será movimentado, e origem é a partir
de onde iniciará o indicador de posição.
Para usar a função fseek, devemos usar uma das seguintes macros:
SEEK_SET para a origem no início do arquivo
SEEK_CUR para a origem na posição atual do indicador de posição
SEEK_END para a origem no final do arquivo
Todas estas macros estão incluidas na biblioteca stdio.h.
Neste código trata-se de mostrar o uso correto da macro
SEEK_SET junto com a função fseek();
O exemplo é de uma clareza impressionate, vale apena testar este código.
Veja duas imagens do programa em execução:
Veaja abaixo o código do programa:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
void Janela5 ( ) {
int lin, col;
for ( lin = 0; lin <= 36 ; lin++ ) {
for ( col = 0; col <= 80 ; col++ ) {
gotoxy ( col , lin );
if ( lin == 2 ) {
textbackground ( LIGHTRED );
printf ( " " );
}
if ( col == 1 ) {
textbackground ( LIGHTRED );
printf ( " " );
}
if ( lin == 36 ) {
textbackground ( LIGHTRED );
}
if ( col == 80 ) {
textbackground ( LIGHTRED );
printf ( " " );
}
}
}
textbackground ( BLACK );
} //Fseek - posicionando
um ponteiro para arquivo
void inicio ( ) {
system ( "title FSEEK -
POSICIONANDO UM PONTEIRO PARA ARQUIVO" );
int i;
do {
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 22 , 7 );
printf ( "FSEEK -
POSICIONANDO UM PONTEIRO PARA ARQUIVO" );
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 );
}
int main ( ) {
inicio ( );
char li_nha [ 27 ] = "Programando
em linguagem C";
char linha [ 27 ];
int result;
FILE *arq;
if ( ( arq = fopen ( "Arquivo.txt" , "wb" ) ) == NULL ) {
printf ( "Houve um erro
na criação do arquivo" );
getche ( );
exit ( 1 );
}
if ( fwrite ( &li_nha , sizeof ( li_nha ) , 1 , arq ) != 1 ) {
printf ( "Houve um erro
na gravação do arquivo" );
getche ( );
exit ( 1 );
}
fclose ( arq );
if ( ( arq = fopen ( "Arquivo.txt" , "rb" ) ) == NULL ) {
printf ( "Houve um erro
na abertura do arquivo" );
getche ( );
exit ( 1 );
}
if ( fread ( &linha , sizeof ( linha ) , 1 , arq ) != 1 ) {
printf ( "Houve um erro
na leitura do arquivo" );
getche ( );
exit ( 1 );
}
system ( "cls" );
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 20 , 3 );
printf ( "FSEEK -
POSICIONANDO UM PONTEIRO PARA ARQUIVO" );
textcolor ( LIGHTBLUE );
gotoxy ( 26 , 5 );
printf ( "Abaixo a
leitura do arquivo aberto" );
textcolor ( YELLOW );
gotoxy ( 30 , 7 );
printf ( "%s" , linha );
getche ( );
result = fseek ( arq , 13L , SEEK_SET );
if ( result )
perror ( "Arquivo.txt" );
else {
textcolor ( LIGHTBLUE );
gotoxy ( 20 , 9 );
printf ( "O Ponteiro de
arquivo foi movido com sucesso" );
textcolor ( LIGHTBLUE );
gotoxy ( 20 , 10 );
printf ( "Para o início
na posição 13 num total de 9 posições" );
textcolor ( LIGHTGREEN );
gotoxy ( 30 , 13 );
printf ( "Veja o
resultado abaixo :" );
fgets ( linha , 10 , arq );
textcolor ( YELLOW );
gotoxy ( 38 , 15 );
printf ( "%s" , linha );
}
fclose ( arq );
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 36 , 20 );
printf ( "MUITO
OBRIGADO" );
getche ( );
exit ( 0 );
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.