Algumas vêzes trabalhando com arquivos, somos obrigados a
copiá-los num vetor de string, para facilitar algumas operações.
Por exemplo: ordenação das string do arquivo, contagem de caracteres, de espaços, vogais, consoantes etc...
Fazer estas operações fica muito fácil quando se obtém uma cópia exata do arquivo em mãos.
E neste código mostro como isto pode ser feito.
Funcionamento básico:
A leitura ocorre normalmente, só que aqui usei um laço for, quebrando quase que uma regra, que na verdade não é, más a maioria prefere usar um laço while(); para esta operação.
No laço for();, se determina a quantidade de linhas que pode ser lida, pela função fgets();, para ser armazenados no vetor de char para string de nome "buffer".
O MODIFICADOR const int TAM = 17;determina a quantidade de caracteres por linha a ser lidos por fegets(); que neste exemplo,17 caracteres por linha foi o suficiente.
A função strcpy(); copia o texto com os nomes que estão no vetor de char "buffer[];", para o vetor de char nome[];
E que são lidos posteriormente por printf(); num laço for.
Código simples e muito útil aos aprendizes de linguagem c.
Veja as imagens do programa em execução;
Veja o código do programa abaixo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/*
Éder Costa
Caroline Silva
Humberto Gomes
Dijalma Lacerda
Igor Gonçalves
Bruna Carla
Fábio Quadros
Geany Barros
Jaqueline Vega
Ana Célia
*/
void Janela5(){
int lin, col;
for ( lin = 0; lin <= 25; lin++ ){
for ( col = 0; col <= 80; col++ ){
gotoxy( col, lin );
if ( lin == 2 ){textbackground(LIGHTBLUE);printf( " ");}
if ( col == 1 ){textbackground(LIGHTBLUE);printf(" ");}
if ( lin == 25 ){textbackground(LIGHTBLUE);}
if ( col == 80 ){textbackground(LIGHTBLUE);printf(" ");}
}
}textbackground( BLACK );
}
int continuando( ){
int nr; do{system("cls");Janela5();
system ("title LENDO ARQUIVO E COPIANDO NUMA STRING");
textcolor(LIGHTRED);gotoxy(25,3);printf("LENDO ARQUIVO E COPIANDO NUMA STRING");
textcolor(YELLOW);gotoxy(24,5);printf("Programa desenvolvido por:");
textcolor(LIGHTGRAY);gotoxy(51,5);printf("Samuel Lima");
textcolor(LIGHTGREEN);gotoxy(34,7);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(24,9);printf ("Digite 0 para sair ou 1 para continuar ");
textcolor(LIGHTRED);scanf ( "%d", &nr );fflush(stdin);fflush(stdin);
if( nr == 0 ){
textcolor(LIGHTRED);gotoxy(35,21);printf("MUITO OBRIGADO");
getche();exit(0);
}
else if( nr == 1 ){
return 1;
}
textcolor(YELLOW);gotoxy(36,16);printf ("\aopção errada!");
getche();
}while(1);
return 1;
}
const int TAM = 18;
int main(){continuando( );system("cls");Janela5();
char nome [ 10 ] [ TAM ];char buffer [ 10 ] [ TAM ];
int i = 0;FILE *arq;
arq = fopen("C:\\Users\\SAMUEL 64SP1\\Desktop\\Arquivos\\Nomes.txt","r + b");
textcolor(LIGHTRED);gotoxy(25,3);printf("LENDO ARQUIVO E COPIANDO NUMA STRING");
textcolor(LIGHTBLUE);gotoxy(6,5);printf("ARQUIVO TXT");
if(arq != NULL){
textcolor(WHITE);
for ( i = 0; i < 10; i++ ) {
gotoxy(5, i + 7);
fgets(*buffer, TAM, arq);
strcpy( nome [ i ], *buffer);
printf(" %s ", *buffer );
}
fclose(arq);
getche();
}
else{
printf("Nao foi possível abrir o arquivo.");
getche();
}
textcolor(LIGHTBLUE);gotoxy(46,5);printf("CÓPIA DO ARQUIVO ");
textcolor(WHITE);
for(i = 0; i < 10; i++ ){
gotoxy(45, i + 7);
printf(" %s ", nome [ i ] );
}
Sleep(1800);
textcolor(LIGHTRED);gotoxy(35,21);printf("MUITO OBRIGADO");
getche();
return(0);
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.