Neste post mostro um bom exemplo de como copiar o conteúdo de um arquivo em outro,
coisa muito fácil de fazer e entender para os que tem envolvimento com Linguagem C.
Isto pode ser feito em poucas linhas de código, más como gosto das coisas bem
organizadas, criei funções para deixar tudo mais claro.
Breve descrição:
A função int Abre_Arq_Um ( ); abre um arquivo existente contendo alguns nomes de
pessoas e imprime no vídeo, onde usei as funções mais usadas para isto.
A função int Abre_Arq_Dois ( ); abre um arquivo vazio criado previamente por mim
e não pelo programa, a causa é só para mostrar que o arquivo está mesmo vazio
antes de receber a cópia.
A função int Abre_E_Copia ( ); abre o arquivo principal novamente, aqui criamos dois
ponteiros para arquivo e um vetor de char para armazenamento das string do arquivo principal.
Temos um laço while(); que varre os arquivos enquanto fputs(); faz a cópia dos dados
que estão no vetor de char para o arquivo II, vindo então o fechamento dos dois arquivos.
Quero que entenda que não cabe a mim detalhar o funcionamento dos comandos usados
por este programa, isto fica a cargo dos interessados pelo código.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
coisa muito fácil de fazer e entender para os que tem envolvimento com Linguagem C.
Isto pode ser feito em poucas linhas de código, más como gosto das coisas bem
organizadas, criei funções para deixar tudo mais claro.
Breve descrição:
A função int Abre_Arq_Um ( ); abre um arquivo existente contendo alguns nomes de
pessoas e imprime no vídeo, onde usei as funções mais usadas para isto.
A função int Abre_Arq_Dois ( ); abre um arquivo vazio criado previamente por mim
e não pelo programa, a causa é só para mostrar que o arquivo está mesmo vazio
antes de receber a cópia.
A função int Abre_E_Copia ( ); abre o arquivo principal novamente, aqui criamos dois
ponteiros para arquivo e um vetor de char para armazenamento das string do arquivo principal.
Temos um laço while(); que varre os arquivos enquanto fputs(); faz a cópia dos dados
que estão no vetor de char para o arquivo II, vindo então o fechamento dos dois arquivos.
Quero que entenda que não cabe a mim detalhar o funcionamento dos comandos usados
por este programa, isto fica a cargo dos interessados pelo código.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
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, c;
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 ( c = tam_ini_col; c < tam_fim_col; c++ ) {
gotoxy ( c, i );
printf ( " " );
}
}
}
int Abre_Arq_Um ( ) {
textcolor ( LIGHTRED );
gotoxy ( 28, 3 );
printf ( "ARQUIVO -
COPIANDO CONTEÚDO" );
textcolor ( LIGHTBLUE );
gotoxy ( 8, 7 );
printf ( "Arquivo
I" );
char nome [ 11 ] [ 17 ] = { 0 };
int i = 0;
FILE *arq;
if ( ( arq = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\"
"Arquivos\\Nomes.txt", "r" ) ) == NULL ) {
gotoxy ( 20, 7 );
printf ( "Houve um erro
na abertura do arquivo" );
getche ( );
exit ( 1 );
}
while ( feof ( arq ) == 0 ) {
fgets ( nome [ i ], 20, arq );
++i;
}
fclose ( arq );
textcolor ( BLACK );
for ( i = 0; i < 10; i++ ) {
gotoxy ( 5, i + 9 );
printf ( "%s", nome [ i ] );
}
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 30, 23 );
printf ( "PRESSIONE
QUALQUER TECLA" );
getche ( );
return ( 0 );
}
int Abre_Arq_Dois ( ) {
textcolor ( LIGHTBLUE );
gotoxy ( 28, 5 );
printf ( "Abaixo a
leitura do arquivo" );
char nome [ 11 ] [ 17 ] = { 0 };
int i = 0;
FILE *arq;
if ( ( arq = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\"
"Arquivos\\No_m_es.txt", "r" ) ) == NULL ) {
gotoxy ( 20, 7 );
printf ( "Houve um erro
na abertura do arquivo" );
getche ( );
exit ( 1 );
}
while ( feof ( arq ) == 0 ) {
fgets ( nome [ i ], 20, arq );
++i;
}
int len = strlen ( *nome );
if ( len == 0 ) {
gotoxy ( 28, 7 );
printf ( "Arquivo II
vazio" );
}
if ( len != 0 ) {
gotoxy ( 54, 7 );
printf ( "Cópia do I mo
II" );
}
fclose ( arq );
textcolor ( BLACK );
for ( i = 0; i < 10; i++ ) {
gotoxy ( 55, i + 9 );
printf ( "%s", nome [ i ] );
}
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 30, 23 );
printf ( "PRESSIONE
QUALQUER TECLA" );
getche ( );
return ( 0 );
}
int Abre_E_Copia ( ) {
FILE *arq, *ar_q;
char Arq [ 256 ];
if ( ( arq = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\"
"Arquivos\\Nomes.txt", "r" ) ) == NULL ) {
gotoxy ( 20, 7 );
printf ( "Houve um erro
na abertura do arquivo" );
getche ( );
exit ( 0 );
} else if ( ( ar_q = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\"
"Arquivos\\No_m_es.txt", "w" ) ) == NULL ) {
gotoxy ( 20, 7 );
printf ( "Houve um erro
na criação do arquivo" );
getche ( );
} else {
while ( fgets ( Arq, sizeof ( Arq ), arq ) )
fputs ( Arq, ar_q );
fclose ( arq );
fclose ( ar_q );
}
return 0;
}
int main ( ) {
system ( "title ARQUIVO
- COPIANDO CONTEÚDO" );
system ( "Color
D7" );
got_color ( 2, 25, 3, 79, 2, 15 );
Abre_Arq_Um ( );
Abre_Arq_Dois ( );
Abre_E_Copia ( );
Abre_Arq_Dois ( );
gotoxy ( 30, 23 );
clreol ( );
Sleep ( 1800 );
textbackground ( WHITE );
textcolor ( LIGHTBLUE );
gotoxy ( 21, 19 );
printf ( "Por: " );
textcolor ( LIGHTMAGENTA );
printf ( "Samuel Lima" );
textcolor ( BLACK );
gotoxy ( 21, 20 );
printf ( "sa_sp10@hotmail.com" );
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 36, 23 );
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.