Upload
mikel
View
24
Download
2
Embed Size (px)
DESCRIPTION
Aula Prática 11 Operações com Arquivos Monitoria 2013.2. Introdução à Programação Engenharia da Computação. A estrutura FILE. É como um tipo de dado, mas não é um tipo propriamente dito Definido no arquivo cabeçalho stdio.h da biblioteca Declarar um ponteiro de arquivo Exemplo: - PowerPoint PPT Presentation
Citation preview
INTRODUÇÃO À PROGRAMAÇÃOENGENHARIA DA
COMPUTAÇÃO
Aula Prática 11
Operações com Arquivos
Monitoria 2013.2
A estrutura FILE
É como um tipo de dado, mas não é um tipo propriamente dito
Definido no arquivo cabeçalho stdio.h da biblioteca
Declarar um ponteiro de arquivo Exemplo:
FILE *fp;
Abrindo e Fechando Arquivos FILE *fopen(char *nomeDoArquivo, char *modo);
Abre um arquivo e retorna um ponteiro para ele Se algum erro ocorrer a constante NULL é retornada Exemplo:
○ fp = fopen(“Arquivo.txt”, “r”); É de fundamental importância verificar se o arquivo foi aberto
corretamente.
int fclose(FILE *fp); Fecha o arquivo passado como parâmetro Retorna 0 se o arquivo foi fechado corretamente Retorna a constante EOF se algum erro ocorreu Exemplo:
○ fclose(fp); É muito importante fechar todos os arquivos que o seu programa abriu, isto
evita a perda dos dados armazenados no buffer. Fechar um arquivo faz com que qualquer caractere que tenha permanecido
no "buffer" associado ao fluxo de saída seja gravado.
Forma formatada
int fscanf(FILE *pf, char *str, ...);Similar a scanf() porém lê de um arquivoExemplo:
○ fscanf(fp, “%d %c”, &num, &ch);
int fprintf(FILE *pf, char *str, ...);Similar a printf() porém escreve em um arquivoExemplo:
○ fprintf(fp, “%d %c”, num, ch);
fseek int fseek(FILE *pf, long numBytes, int origem);
Move a posição corrente de leitura ou escrita em um arquivo
pf é o arquivo que se deseja percorrer numBytes é o número de bytes a serem movidos retorna 0 em caso de sucesso ou não-zero caso contrário. origem é o ponto de partida(geralmente usa-se as
macros abaixo):
Nome Val Significado
SEEK_SET 0 Inicio do arq.
SEEK_CUR 1 Ponto corrente
SEEK_END 2 Fim do arquivo
rewind e remove void rewind(FILE *fp);
Move o cursor para o inicio do arquivoExemplo:
○ rewind(fp);
int remove(char *Arquivo);Apaga o arquivo que passamos o ponteiro.Retorna zero se ocorreu sucessoNão zero em caso de erroExemplo:
○ remove(“Arquivo.txt”);
Verificando fim de arquivo
int feof(FILE *fp);Indica o fim de um arquivoRetorna não-zero se o arquivo chegou ao
fim e zero caso contrário
EOF é uma constante que representa o fim do arquivo. fscanf() retorna EOF quando chega no fim do arquivo, então isso pode ser usado para checar se o arquivo terminou de ser lido.
Outra forma de ler/escrever de arquivo
FILE * freopen ( const char * filename, const char * mode, FILE * stream );
Com essa função, você pode redirecionar a entrada padrão para um arquivo
Exemplo : freopen (“input.txt”, “r”, stdin);freopen (“output.txt”, “w”, stdout);
Após estes comandos serem utilizados, scanf() e printf() irão aparecer nosArquivos definidos como parâmetro, e não mais no console.
Vantagens : Você pode mudar da entrada padrão para o arquivo e vice versa só comentando essas linhas, sem precisar alterar o código todo.
Desvantagens : Uma vez chamada essas funções, você não poderá usar arquivo e entrada padrão ao mesmo tempo, pois a referência foi perdida
Exercícios 1. Escreva um programa que funcione como uma agenda telefônica.
Deverá existir uma estrutura que represente os contatos da agenda (nome e telefone). Deverá existir uma estrutura que representa a agenda, ela conterá um vetor dinâmico de ponteiros que vai servir para guardar os contatos da agenda e o número de contatos. Os contados deverão ser armazenados em ordem alfabética no vetor.
O programa usará um arquivo chamado “agenda.txt” para salvar e carregar contatos entre as execuções. Um contato é representado na agenda por “NomeContato, Numero”. Haverá um contato por linha.
O programa deverá apresentar as seguintes opções:• Inserir contato• Remover contato (receberá o nome do contato que será deletado)• Buscar contato (receberá o nome do contato)• Salvar agenda (salva a agenda atual no arquivo “agenda.txt”• Carregar agenda (carrega a agenda do arquivo “agenda.txt” para o
programa)