Beruflich Dokumente
Kultur Dokumente
5396360
1) Execute os dois programas da aula (registros de comprimento fixo e variável). Construa um novo
programa para a leitura de um arquivo de registros de tamanho variável e construção de outro
arquivo com saída formatada para le
leitura em editor de texto. Deve
ser entregue impresso em papel:
Como exemplo
mplo foram arma
armazenados alguns dados
dos em ambos os arquivos e obteve
obteve-se os seguintes
tamanhos de arquivos:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
// PROGRAMA PRINCIPAL
int main(){
escreve_dados(filename);
converte_dados_leitura(filename, filename2);
// Lê dados
printf("\n\nType in last name, or <cr> to exit\n>>>");
gets(last);
while(strlen(last) > 0) {
total_registros = 0;
while ( read(fd,tamstr,3) > 0)
{
total_registros++; //Número do Registro
tamanho = atoi(tamstr); //Tamanho do Registro (3 primeiros Caracteres)
read(fd,registro,tamanho); //Lê o registro em uma String
inicio_de_dado = registro;
//Sobrenome
fim_de_dado = strstr(inicio_de_dado,DELIM_STR);
*fim_de_dado = '\0';
strcpy(last, inicio_de_dado);
//Nome
inicio_de_dado = fim_de_dado + 1;
fim_de_dado = strstr(inicio_de_dado,DELIM_STR);
*fim_de_dado = '\0';
strcpy(first , inicio_de_dado);
//Endereço
inicio_de_dado = fim_de_dado + 1;
fim_de_dado = strstr(inicio_de_dado,DELIM_STR);
*fim_de_dado = '\0';
strcpy(address , inicio_de_dado);
//Cidade
inicio_de_dado = fim_de_dado + 1;
fim_de_dado = strstr(inicio_de_dado,DELIM_STR);
*fim_de_dado = '\0';
strcpy(city , inicio_de_dado);
//Estado
inicio_de_dado = fim_de_dado + 1;
fim_de_dado = strstr(inicio_de_dado,DELIM_STR);
*fim_de_dado = '\0';
strcpy(state , inicio_de_dado);
//CEP
inicio_de_dado = fim_de_dado + 1;
fim_de_dado = strstr(inicio_de_dado,DELIM_STR);
*fim_de_dado = '\0';
strcpy(cep , inicio_de_dado);
close(fd);
fclose(fd2);
}
(c) impressão do arquivo .txt da simulação.
DADOS.dat
051Manzan|Stevan|Rua Caboclo, 13|Uberaba|MG|380687000|074Bordignon|Gabriela|Rua
Major Julio Sales, 937, ap7|Sao Carlos|SP|13561010|061Rodrigues|Katia|Rua Delfim
Moreira, 1372|Uberaba|MG|38067000|063Bordignon|Loredania|Rua Salim Chaib, 76|Mogi
Mirim|SP|13800038|059Manzan|Nilson|Av. Elias Cruvinel, 1400|Uberaba|MG|38060100|
LEITURA.txt
# REGISTRO NUMERO: 1
- NOME: Stevan Manzan
- ENDERECO: Rua Caboclo, 13
- CIDADE: Uberaba
- ESTADO: MG
- CEP: 380687000
# REGISTRO NUMERO: 2
- NOME: Gabriela Bordignon
- ENDERECO: Rua Major Julio Sales, 937, ap7
- CIDADE: Sao Carlos
- ESTADO: SP
- CEP: 13561010
# REGISTRO NUMERO: 3
- NOME: Katia Rodrigues
- ENDERECO: Rua Delfim Moreira, 1372
- CIDADE: Uberaba
- ESTADO: MG
- CEP: 38067000
# REGISTRO NUMERO: 4
- NOME: Loredania Bordignon
- ENDERECO: Rua Salim Chaib, 76
- CIDADE: Mogi Mirim
- ESTADO: SP
- CEP: 13800038
# REGISTRO NUMERO: 5
- NOME: Nilson Manzan
- ENDERECO: Av. Elias Cruvinel, 1400
- CIDADE: Uberaba
- ESTADO: MG
- CEP: 38060100