9
INTRODUÇÃO À PROGRAMAÇÃO ENGENHARIA DA COMPUTAÇÃO Aula Prática 11 Operações com Arquivos Monitoria 2013.2

Introdução à Programação Engenharia da Computação

  • 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

Page 1: Introdução à Programação Engenharia da Computação

INTRODUÇÃO À PROGRAMAÇÃOENGENHARIA DA

COMPUTAÇÃO

Aula Prática 11

Operações com Arquivos

Monitoria 2013.2

Page 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:

FILE *fp;

Page 3: Introdução à Programação Engenharia da Computação

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.

Page 4: Introdução à Programação Engenharia da Computação

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);

Page 5: Introdução à Programação Engenharia da Computação

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

Page 6: Introdução à Programação Engenharia da Computação

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”);

Page 7: Introdução à Programação Engenharia da Computação

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.

Page 8: Introdução à Programação Engenharia da Computação

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

Page 9: Introdução à Programação Engenharia da Computação

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)