Geralmente pra se ter uma leitura com êxito de um arquivo devemos
analizá-lo antes, isto porque o arquivo pode está todo
desorganizado, então criamos um certo padrão.
Agora pergunto, se estamos criando um arquivo que será lido pelo programa
Porque não organizá-lo antes?
Precisamos saber quantas strings, floats e inteiros o programa precisa
para a leitura; Então criei um arquivo e estou utilizando-o para preenchimento
dos campos de uma struct,onde declarei cinco chars e três ints.
A struct recebe memória alocada dinamicamente, e é liberada por free();
no término do programa.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
analizá-lo antes, isto porque o arquivo pode está todo
desorganizado, então criamos um certo padrão.
Agora pergunto, se estamos criando um arquivo que será lido pelo programa
Porque não organizá-lo antes?
Precisamos saber quantas strings, floats e inteiros o programa precisa
para a leitura; Então criei um arquivo e estou utilizando-o para preenchimento
dos campos de uma struct,onde declarei cinco chars e três ints.
A struct recebe memória alocada dinamicamente, e é liberada por free();
no término do programa.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct Cidadao {
char nome [ 20 ];
char Snome [ 20 ];
char nasc [ 20 ];
char lo_cal [ 20 ];
char sigla [ 20 ];
int dia;
int mes;
int ano;
};
void Moldura ( int a , int c , int b , int d , int e , int f ) {
textbackground ( WHITE );
for ( a = e; a <= c ; a++ )
for ( b = f; b <= d ; b++ ) {
gotoxy ( b , a );
textbackground ( WHITE );
printf ( " " );
}
}
int main ( ) {
Moldura ( 2 , 24 , 2 , 78 , 2 , 3 );
system ( "title ARQUIVO
- INSERINDO DADOS EM STRUCT" );
FILE *arq;
int i, j = 0, k;
if ( ( arq = fopen (
"C:\\Users\\Lima
32 SP1\\Desktop\\Arquivos\\Cidadão.txt" , "r" ) )
== NULL ) {
printf ( "Houve um erro
na abertura do arquivo" );
getche ( );
exit ( 1 );
}
struct Cidadao *Pessoa [ 11 ];
Pessoa [ j ] = ( struct Cidadao * ) malloc ( sizeof(struct Cidadao) );
if ( !Pessoa ) {
printf ( "Não foi possível
alocar memória" );
getche ( );
exit ( 1 );
}
textcolor ( LIGHTRED );
gotoxy ( 26 , 4 );
printf ( "ARQUIVO -
INSERINDO DADOS EM STRUCT" );
textcolor ( LIGHTBLUE );
gotoxy ( 21 , 6 );
printf ( "Abaixo os
dados que foram lidos do arquivo" );
textcolor ( LIGHTRED );
gotoxy ( 9 , 8 );
printf (
" Nome Dia
Mês Ano Origem Estado
Sigla" );
k = 0;
while ( k < 10 ) {
k++;
for ( j = 0; j < 1 ; j++ ) {
fscanf ( arq , "%s %s" , Pessoa [ j ]->nome , Pessoa [ j ]->Snome );
fscanf ( arq , "%d" , &Pessoa [ j ]->dia );
fscanf ( arq , "%d" , &Pessoa [ j ]->mes );
fscanf ( arq , "%d" , &Pessoa [ j ]->ano );
fscanf ( arq , "%s" , Pessoa [ j ]->nasc );
fscanf ( arq , "%s" , Pessoa [ j ]->lo_cal );
fscanf ( arq , "%s" , Pessoa [ j ]->sigla );
}
for ( i = 0; i < j ; i++ ) {
textbackground ( WHITE );
textcolor ( BLACK );
gotoxy ( 6 , k + 9 );
printf ( "%s %s" , Pessoa [ i ]->nome , Pessoa [ i ]->Snome );
gotoxy ( 24 , k + 9 );
printf ( "%d" , Pessoa [ i ]->dia );
gotoxy ( 30 , k + 9 );
printf ( "%d" , Pessoa [ i ]->mes );
gotoxy ( 36 , k + 9 );
printf ( "%d" , Pessoa [ i ]->ano );
gotoxy ( 45 , k + 9 );
printf ( "%s" , Pessoa [ i ]->nasc );
gotoxy ( 60 , k + 9 );
printf ( "%s" , Pessoa [ i ]->lo_cal );
gotoxy ( 73 , k + 9 );
printf ( "%s" , Pessoa [ i ]->sigla );
normvideo ( );
Sleep ( 80 );
}
if ( k == 10 ) {
Sleep ( 1800 );
textbackground ( WHITE );
textcolor ( LIGHTBLUE );
gotoxy ( 17 , 21 );
printf ( "Por: " );
textcolor ( LIGHTMAGENTA );
printf ( "Samuel
Lima" );
textcolor ( BLACK );
gotoxy ( 17 , 22 );
printf ( "sa_sp10@hotmail.com" );
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 36 , 24 );
printf ( "MUITO
OBRIGADO" );
getch ( );
exit ( 0 );
getche ( );
}
}
while ( j <= 10 )
;
fclose ( arq );
free ( Pessoa );
return 0;
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.