Flexibilidade e poder são o que penso a respeito do sistema de arquivos do C.
O C nos permite abrir arquivos binários ilegível a nós humanos, da mesma forma como abre arquivos de texto totalmente compreenssíveis.
Com certeza é bem mais seguro criar um arquivo onde a ilegibilidade
não permite a comprensão, muito menos ainda a edição dos dados.
O tipo FILE que é um dos mais usados quando devemos declarar um
ponteiro para arquivo é o principal a nos fornecer informações precisas sobre o arquivo aberto,
e um ponteiro para arquivo é capaz de identificar um arquivo específico dentro do disco.
Fica claro que um ponteiro de arquivo é uma variável ponteiro
do tipo FILE, e somos obrigados a usá-los para ler ou escrever
arquivos em C.
A biblioteca padrão do C, stdio.h possui diversas funções
para manipulação de arquivos, porém não me sinto a vontade de comentar sobre estas funções que tomariam dezenas de linhas e fugiria do alvo principal que é apenas mostrar como criar,
abrir e lê um arquivo binário em C.
Veja abaixo uma imagem do programa em execução:
Veja abaixo código do programa:
O C nos permite abrir arquivos binários ilegível a nós humanos, da mesma forma como abre arquivos de texto totalmente compreenssíveis.
Com certeza é bem mais seguro criar um arquivo onde a ilegibilidade
não permite a comprensão, muito menos ainda a edição dos dados.
O tipo FILE que é um dos mais usados quando devemos declarar um
ponteiro para arquivo é o principal a nos fornecer informações precisas sobre o arquivo aberto,
e um ponteiro para arquivo é capaz de identificar um arquivo específico dentro do disco.
Fica claro que um ponteiro de arquivo é uma variável ponteiro
do tipo FILE, e somos obrigados a usá-los para ler ou escrever
arquivos em C.
A biblioteca padrão do C, stdio.h possui diversas funções
para manipulação de arquivos, porém não me sinto a vontade de comentar sobre estas funções que tomariam dezenas de linhas e fugiria do alvo principal que é apenas mostrar como criar,
abrir e lê um arquivo binário em C.
Veja abaixo uma imagem do programa em execução:
Veja abaixo código do programa:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#define tam 100
void got_color ( int tam_lin_ini, int tam_lin_fim, int tam_ini_col,
int tam_fim_col, int a, int b ) {
int i, e;
if ( a >= 1 && a <= 16 ) {
textcolor ( a );
}
if ( b >= 1 && b <= 16 ) {
textbackground ( b );
}
for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {
for ( e = tam_ini_col; e < tam_fim_col; e++ ) {
gotoxy ( e, i );
printf ( " " );
}
}
}
int
Gera_Num_Sem_Repetidos ( ) {
int *A;
A = ( int* ) malloc ( tam * sizeof(int) );
size_t i;
int aut, j, t;
FILE * arq;
if ( ( arq = fopen ( "Aleatórios . bin", "wb" ) ) == NULL ) {
textcolor ( LIGHTBLUE );
gotoxy ( 25, 15 );
printf ( "Não foi possível
criar o arquivo!" );
getche ( );
}
srand ( ( unsigned int ) time ( NULL ) );
// srand ( time ( NULL
) );
for ( i = 0; i < tam; i++ ) {
do {
t = rand ( ) % tam;
if ( t == 0 ) {
t = tam;
}
aut = 0;
for ( j = 0; j < tam; j++ )
if ( t == A [ j ] )
aut = 1;
if ( aut == 0 ) {
A [ i ] = t;
}
} while ( aut == 1 );
}
for ( i = 0; i < tam; i++ ) {
fwrite ( A + i, sizeof(int), 1, arq );
}
fclose ( arq );
free ( A );
return 0;
}
int main ( void ) {
system ( "title ARQUIVO
BIN : GERANDO - GRAVANDO E LENDO INTEIROS " );
got_color ( 2, 25, 3, 79, 2, 15 ); //Moldura
size_t i;
Gera_Num_Sem_Repetidos ( );
FILE * ar_q;
if ( ( ar_q = fopen ( "Aleatórios .
bin", "rb" ) ) == NULL ) {
textcolor ( LIGHTBLUE );
gotoxy ( 25, 15 );
printf ( "Não foi possível
abrir o arquivo!" );
getche ( );
}
int num [ 100 ];
textcolor ( LIGHTRED );
gotoxy ( 18, 3 );
printf ( "ARQUIVO BIN :
GERANDO - GRAVANDO E LENDO INTEIROS" );
textcolor ( LIGHTBLUE );
gotoxy ( 25, 5 );
printf ( "Abaixo os 100
números lidos do arquivo " );
textcolor ( BLACK );
gotoxy ( 17, 7 );
for ( i = 0; i < 100; i++ )
if ( fread ( &num, sizeof(int), 1, ar_q ) == 1 ) {
if ( i == 10){gotoxy(17,8); }
if ( i == 20){gotoxy(17,9); }
if ( i == 30){gotoxy(17,10);}
if ( i == 40){gotoxy(17,11);}
if ( i == 50){gotoxy(17,12);}
if ( i == 60){gotoxy(17,13);}
if ( i == 70){gotoxy(17,14);}
if ( i == 80){gotoxy(17,15);}
if ( i == 90){gotoxy(17,16);}
printf (" %3d ", *num );
}
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 26, 18 );
printf ( "Por: " );
textcolor ( LIGHTBLUE );
printf ( "Samuel Lima" );
textcolor ( BLACK );
gotoxy ( 26, 20 );
printf ( "sa_sp10@hotmail.com" );
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 37, 23 );
printf ( "MUITO
OBRIGADO" );
getche ( );
fclose ( ar_q );
return 0;
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.