90 likes | 181 Views
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:
E N D
Aula Prática 11 Operações com Arquivos Monitoria 2013.2 Introdução à ProgramaçãoEngenharia 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: • 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. • intfclose(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 • intfscanf(FILE *pf, char *str, ...); • Similar a scanf() porém lê de um arquivo • Exemplo: • fscanf(fp, “%d %c”, &num, &ch); • intfprintf(FILE *pf, char *str, ...); • Similar a printf() porém escreve em um arquivo • Exemplo: • fprintf(fp, “%d %c”, num, ch);
fseek • intfseek(FILE *pf, longnumBytes, 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):
rewind e remove • void rewind(FILE *fp); • Move o cursor para o inicio do arquivo • Exemplo: • rewind(fp); • int remove(char *Arquivo); • Apaga o arquivo que passamos o ponteiro. • Retorna zero se ocorreu sucesso • Não zero em caso de erro • Exemplo: • remove(“Arquivo.txt”);
Verificando fim de arquivo • intfeof(FILE *fp); • Indica o fim de um arquivo • Retorna 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 nos Arquivos 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)