200 likes | 290 Views
Ordenação e Pesquisa de Dados. Marco Antonio Montebello Júnior marco.antonio@aes.edu.br. Definição de tipos. O comando typedef permite ao programador definir um novo nome para um determinado tipo de dado. Sua sintaxe é: typedef antigo_nome novo_nome; Exemplo:
E N D
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior marco.antonio@aes.edu.br
Definição de tipos • O comando typedef permite ao programador definir um novo nome para um determinado tipo de dado. • Sua sintaxe é: • typedef antigo_nome novo_nome; • Exemplo: • Criar um novo tipo, chamado inteiro para definir o tipo int: • typedef int inteiro;
Definição de tipos • O comando typedef também pode ser utilizado para dar nome a tipos complexos, como por exemplos as estruturas. • Exemplo: • typedef struct endereco { char rua [50]; int numero; char bairro [20]; char cidade [30]; } TEndereco; main() { TEndereco *end; ... }
I/O • O sistema de entrada e saída (I/O) da linguagem C ANSI é composto por uma série de funções, cujos protótipos estão reunidos em stdio.h. • Todas estas funções trabalham com o conceito de "ponteiro de arquivo". • Este não é um tipo propriamente dito, mas uma definição usando o comando typedef.
I/O • Podemos declarar um ponteiro de arquivo da seguinte maneira: • FILE *p; • Onde • FILE é a estrutura que contém informações específicas sobre o arquivo (tamanho, nome etc.) • p é um ponteiro para um arquivo que manipularemos em Linguagem C.
I/O - Funções • Existem diversas funções para manipulação de arquivos, entre elas:
I/O - fopen • Esta função é utilizada para abertura de arquivos. • Seu protótipo é: • FILE *fopen (char *nome_do_arquivo, char *modo_de_abertura); • onde: • *nome_do_arquivo: representa o nome do arquivo que será aberto (para leitura ou gravação) • *modo_de_abertura: define o tipo de abertura do arquivo que pode ser: • “r” – leitura • “w” – escrita • “a”- adicionar dados • além de 2 modificadores: • “+” – atualização • “b” – modo binário
I/O - fopen • Modos de abertura de arquivo:
I/O - fopen • Exemplo: FILE *fp; if ((fp = fopen(“teste.txt”, “w”)) == NULL) { printf(“Erro ao tentar abrir o arquivo!”); exit(1); } • Caso ocorra algum erro com a função fopen, é retornado NULL.
I/O - fclose • Após utilizar o arquivo que abrimos, devemos fechá-lo. • Para isso utiliza-se a função fclose(): • Sintaxe: int fclose (FILE *fptr); • O ponteiro fptr passado à função fclose() determina o arquivo a ser fechado. A função retorna zero no caso de sucesso.
I/O - feof • EOF ("End of file") indica o fim de um arquivo. • A necessidade de verificar se um arquivo chegou ao fim, muitas vezes é necessária. • Para isto podemos utilizar a função feof(), que retorna: • qualquer valor diferente de zero (verdadeiro), caso tenha chegado ao seu final; • caso contrário retorna zero. • Seu protótipo é: int feof (FILE *fp);
I/O – getc e putc • Para ler e escrever um caractere por vez, utilizamos as funções getc() e putc(), respectivamente • Protótipos: • int getc (FILE *fptr); • onde: • fptr – corresponde ao ponteiro do arquivo a ser lido • int putc (int ch, FILE *fptr); • onde: • ch – caractere a ser armazenado • fptr – corresponde ao ponteiro do arquivo a ser gravado
I/O – fread - fwrite • Podemos também ler e escrever blocos de dados. • Para isso, utilizamos as funções fread() e fwrite() • Protótipos: • unsigned fread (void *buffer, int tam, int qtde, FILE *fptr); • onde: • buffer – ponteiro do tipo void para o endereço da memória onde serão armazenados os dados lidos • tam – tamanho em bytes do tipo de dados a ser lido • qtde – quantidade de itens a serem lidos • fptr – corresponde ao ponteiro do arquivo a ser lida
I/O – fread - fwrite • unsigned fwrite(void *buffer,int tam,int qtd,FILE *fptr); • onde: • buffer – ponteiro do tipo void para o endereço da memória do dado a ser armazenado • tam – tamanho em bytes do tipo de dados a ser armazenado • qtde – quantidade de itens a serem gravados • fptr – corresponde ao ponteiro do arquivo a ser gravado
Exercícios • Fazer um programa em linguagem C que escreva um arquivo texto utilizando a função putc(). Os caracteres a serem escritos devem ser obtidos do teclado. • Modifique o programa anterior de modo que seja possível ler as informações do arquivo gravado, através da função getc(). Esse programa deverá ter um menu, no qual o usuário escolhe se quer gravar dados ou ler os dados.
Exercícios • Fazer um programa em linguagem C (chamado copia) que deverá ler um arquivo e copiar seu conteúdo para um outro arquivo. • Os arquivos deverão ser abertos da seguinte forma: • Arquivo origem: abertura para leitura em modo binário • Arquivo destino: Abertura para escrita em modo binário. • Utilizar a função feof() para determinar o final do arquivo.
Exercícios • Fazer o programa chamado procurar, em linguagem C que, receba via linha de comando: • Nome do arquivo • posição (em bytes) que será lida do arquivo • exemplo: procurar nomearq byte • O programa deve usar a função seek() para posicionar o arquivo no byte especificado, ler tal byte e imprimi-lo na forma de um caractere.
Exercícios • Escreva um programa que leia uma lista de nomes e idades de um arquivo texto, no seguinte formato: • Nome(1) • Idade(1) • ... • Nome(n) • Idade(n) • Apresente os dados lidos em forma de tabela na tela.