Para estudantes em linguagem c apresento este excelente código,
onde mostro como apagar linhas de um arquivo aleatoriamente, sendo que
a escolha das linhas a serem apagadas serão escolhidas pelo usuário.
usei um arquivo de desesseis linhas, más nada impede que você edite
o código para funcionar com arquivos maiores.
O texto usado no arquivo original está comentado no código.
Copie, cole, compile e estude, são poucos os que disponibilizam
ótimos códigos didáticos como os que compartilho sem querer nada em troco.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
onde mostro como apagar linhas de um arquivo aleatoriamente, sendo que
a escolha das linhas a serem apagadas serão escolhidas pelo usuário.
usei um arquivo de desesseis linhas, más nada impede que você edite
o código para funcionar com arquivos maiores.
O texto usado no arquivo original está comentado no código.
Copie, cole, compile e estude, são poucos os que disponibilizam
ótimos códigos didáticos como os que compartilho sem querer nada em troco.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio.h>
#define APAGA '\0'
#define SI_ZE 16
#define re_al real
/*
Deus prometeu com certeza
Chuvas de graça mandar;
Ele nos dá fortaleza,
E ricas bênçãos sem par
Chuvas de graça,
Chuvas pedimos, Senhor;
Manda-nos chuvas constantes,
Chuvas do Consolador.
Cristo nos tem concedido
O santo Consolador,
De plena paz nos enchido,
Para o reinado do amor.
Dá-nos, Senhor, amplamente,
Teu grande gozo e poder;
Fonte de amor permanente,
Põe dentro de nosso ser.
*/
int main ( void );
void Janela5 ( ) {
int l, c;
system ( "Color F0" );
for ( l = 0; l <= 25; l++ ) {
for ( c = 0; c <= 80; c++ ) {
gotoxy ( c, l );
if ( l == 2 ) {
textbackground ( LIGHTGRAY );
printf ( " " );
}
if ( c == 1 ) {
textbackground ( LIGHTGRAY );
printf ( " " );
}
if ( l == 25 ) {
textbackground ( LIGHTGRAY );
}
if ( c == 80 ) {
textbackground ( LIGHTGRAY );
printf ( " " );
}
}
}
textbackground ( LIGHTGRAY );
}
int continuando ( ) {
system ( "title ARQUIVO
- EXTRAINDO LINHAS E APAGANDO" );
int nr;
do {
system ( "cls" );
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 25, 5 );
printf ( "ARQUIVO -
EXTRAINDO LINHAS E APAGANDO" );
textcolor ( BROWN );
gotoxy ( 25, 7 );
printf ( "Programa
desenvolvido por:" );
textcolor ( WHITE );
gotoxy ( 52, 7 );
printf ( "Samuel Lima" );
textcolor ( BLUE );
gotoxy ( 34, 9 );
printf ( "sa_sp10@hotmail.com" );
textcolor ( LIGHTBLUE );
gotoxy ( 24, 11 );
printf ( "Digite 0 para
sair ou 1 para continuar " );
textcolor ( LIGHTRED );
scanf ( "%d", &nr );
fflush ( stdin );
fflush ( stdin );
if ( nr == 0 ) {
textcolor ( LIGHTRED );
gotoxy ( 36, 18 );
printf ( "MUITO
OBRIGADO" );
getche ( );
exit ( 0 );
} else if ( nr == 1 ) {
return 1;
}
textcolor ( YELLOW );
gotoxy ( 36, 16 );
printf ( "\aopcão errada!" );
getche ( );
} while ( 1 );
return 1;
}
int abr_apag_arq ( char abre_arq [ ] ) {
FILE *arq;
FILE *a_q;
int linha = 1;
int i, ini, fim, real;
char strings [ 100 ];
arq = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\Arquivos\\louvor.txt",
"r + b" );
if ( !arq ) {
printf ( "Houve um erro
na abertura do arquivo\n" );
getche ( );
return 0;
}
if ( ( a_q = fopen (
"C:\\Users\\SAMUEL
64SP1\\Desktop\\Arquivos\\louvor II.txt", "w" ) )
== 0 ) { //testa se o arquivo
pode ser aberto
printf ( "Houve um erro
na abertura do arquivo\n" );
getche ( );
exit ( 1 );
}
system ( "cls" );
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 25, 3 );
printf ( "ARQUIVO -
EXTRAINDO LINHAS E APAGANDO" );
textcolor ( LIGHTBLUE );
gotoxy ( 7, 5 );
printf ( "A partir de
qual linha deseja apagar ? " );
textcolor ( LIGHTRED );
scanf ( "%d", &ini );
fflush ( stdin );
while ( ini < 0 || ini > 60 ) {
textcolor ( LIGHTBLUE );
gotoxy ( 25, 7 );
printf ( "\aO Número
inicial não Pode Ser Negativo" );
textcolor ( LIGHTBLUE );
gotoxy ( 25, 8 );
printf ( "Nem Maior que
60 " );
Sleep ( 1000 );
gotoxy ( 25, 10 );
textcolor ( AMARELO );
printf ( "PRESSIONE
QUALQUER TECLA" );
getche ( );
system ( "cls" );
main ( );
}
textcolor ( LIGHTBLUE );
gotoxy ( 7, 7 );
printf ( "Até qual
linha apagaremos ? " );
textcolor ( LIGHTRED );
scanf ( "%d", &fim );
fflush ( stdin );
while ( fim < ini + 3 || fim > SI_ZE ) {
textcolor ( LIGHTBLUE );
gotoxy ( 7, 9 );
printf (
"\aO Número
final tem que ter no mínimo 10 linhas a mais que o inicial" );
textcolor ( LIGHTBLUE );
gotoxy ( 7, 10 );
printf ( "e tem que ser
menor que %d", SI_ZE );
Sleep ( 1000 );
gotoxy ( 25, 14 );
textcolor ( AMARELO );
printf ( "PRESSIONE
QUALQUER TECLA" );
getche ( );
system ( "cls" );
main ( );
}
real = ( fim - ini );
textcolor ( LIGHTBLUE );
gotoxy ( 7, 9 );
printf ( "Você está
prestes a apagar " );
textcolor ( LIGHTRED );
printf ( " %d ", re_al );
textcolor ( LIGHTBLUE );
printf ( " linhas do
arquivo " );
Sleep ( 1000 );
textcolor ( LIGHTRED );
gotoxy ( 30, 23 );
printf ( "PRESSIONE QUALQUER TECLA" );
rewind ( arq );
for ( i = 0; !feof ( arq ); i++ ) {
memset ( strings, APAGA, 100 );
fgets ( strings, 101, arq );
if ( linha > ini && linha < fim + 1 ) {
fputc ( '\n', a_q );
linha = linha + 1;
continue;
}
linha = linha + 1;
fputs ( strings, a_q );
}
fclose ( arq );
fclose ( a_q );
getche ( );
return ( real );
return ( 0 );
}
int main ( void ) {
int i, c = 0, n;
continuando ( );
n = abr_apag_arq ( "louvor
II.txt" );
char **no_me;
no_me = ( char** ) malloc ( SI_ZE * sizeof(char*) );
FILE *file;
FILE *arq;
file = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\Arquivos\\louvor II.txt",
"r + b" );
if ( !file ) {
printf ( "Houve um erro
na abertura do arquivo\n" );
getche ( );
return 0;
}
arq = fopen ( "C:\\Users\\SAMUEL
64SP1\\Desktop\\Arquivos\\louvor.txt",
"r + b" );
if ( !arq ) {
printf ( "Houve um erro
na abertura do arquivo\n" );
getche ( );
return 0;
}
system ( "cls" );
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 25, 3 );
printf ( "ARQUIVO -
EXTRAINDO LINHAS E APAGANDO" );
textcolor ( LIGHTBLUE );
gotoxy ( 5, 5 );
printf ( "Veja abaixo o
arquivo original" );
printf ( "\n\n" );
for ( i = 0; i < SI_ZE; i++ ) {
no_me [ c ] = ( char* ) malloc ( SI_ZE * sizeof(char*) );
fgets ( no_me [ i ], 60, arq );
textcolor ( LIGHTRED );
gotoxy ( 7, i + 7 );
printf ( " %d ", c++ );
textcolor ( WHITE );
printf ( " %s ", no_me [ i ] );
}
textcolor ( LIGHTBLUE );
gotoxy ( 45, 5 );
printf ( "Abaixo com
as" );
textcolor ( LIGHTRED );
printf ( " %d ", n );
textcolor ( LIGHTBLUE );
printf ( "linhas
apagadas" );
printf ( "\n\n" );
c = 0;
for ( i = 0; i < SI_ZE; i++ ) {
no_me [ c ] = ( char* ) malloc ( SI_ZE * sizeof(char*) );
fgets ( no_me [ i ], 60, file );
textcolor ( LIGHTRED );
gotoxy ( 40, i + 7 );
printf ( " %d ", c++ );
textcolor ( WHITE );
printf ( " %s ", no_me [ i ] );
}
Sleep ( 1000 );
textcolor ( LIGHTRED );
gotoxy ( 36, 24 );
printf ( "MUITO
OBRIGADO" );
getche ( );
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.