Programação II. Files Read & Write. Bruno Feijó Dept. de Informática, PUC-Rio

Documentos relacionados
Capítulo 06: Arquivos

Introdução à Programação

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Referências. Arquivos. Tópicos Principais. Programação de Computadores II. Motivação. Motivação. Abertura de arquivo. Slides da profa.

Capítulo 6: Arquivos

Outline. 33. Manipulação de arquivos DIM

1/24 FICHEIROS DE TEXTO

Aula 16: Manipulação de Arquivos em C

Arquivos. INF1005 Programação I Profa. Simone D.J. Barbosa sala 410 RDC

Programação II. Arquivos - Conceito. Arquivos

Manipulação de Arquivos em C

Computação 2. Aula 9. Diego Addan Arquivos

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

Laboratório de Introdução à Ciência da Computação I

Computação 2. Aula 8. Profª. Fabiany Arquivos

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

INF 1005 Programação I - Prof. Hélio Lopes 24/04/2012

Introdução a Programação. Manipulando Arquivos em Modo Texto

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Arquivos. Programação de Computadores I. Natália Batista.

Sumário. Ficheiros. Ficheiros

Linguagem C Ficheiros Compilação Separada

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos.

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

Métodos Computacionais. Arquivos

Programação para Computação 13ª Aula

Arquivos em C. Material da Prof. Ana Eliza

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

O que é a modularização

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

LINGUAGEM C: ARQUIVOS

Fundamentos de Programação 1

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Arquivos em C Parte 2

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan

MAC-115 Introdução à Computação para Ciências Exatas e Tecnologia IO Terceiro Exercício-Programa Entregar até 09/11/2007

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

Aula 26 - Arquivos. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

TÉCNICAS DE PROGRAMAÇÃO

Fundamentos de Programação

Manipulação de Arquivos. Técnicas de Programação

Alocação Dinâmica de Memória - Exercício

Manipulação de Arquivos

LINGUAGEM C: ARQUIVOS

13a. Aula Manipulação de arquivos

INF 1620 P2-14/10/05 Questão 1 Nome:

Manipulação de Ficheiros

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

Introdução à Computação II AULA 08 BCC Noturno - EMA896115B

INF 1620 P3-02/07/02 Questão 1 Nome:

Arquivos. Estruturas de Dados II Vanessa Braganholo

Linguagem de Programação

Linguagem de Programação C. Arquivos

Manipulação de Arquivos

Aula 26: Arquivos de texto

Linguagem C: Arquivo-Texto

Depuração e Teste de programas C C Depuração e teste de programas C

Aluno: Matrícula: Turma:

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Introdução a Programação. Arquivos

Leitura de Arquivos. Prof. Fabrício Olivetti de França

Mestrado em Engenharia Física Tecnológica

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

Manipulação de Arquivos Exercício/Exemplo:

Linguagem de Programação C. Arquivos Binários

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

INF 1620 P1-16/09/06 Questão 1 Nome:

Programação Estruturada

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Programação Estruturada Prof. Rodrigo Hausen Entrada e Saída Parte 2

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

Elementos de entrada e saída com arquivos

Algoritmos e Estruturas de Dados II IEC013

INF 1620 P4 30/06/07 Questão 1 Nome:

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

INF 1620 P4 11/12/06 Questão 1 Nome:

Programação de Computadores

Aula 16. Ficheiros de texto

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Manipulação de Arquivos

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

Introdução a Computação

Programação de Computadores II

Transcrição:

Programação II Files Read & Write Bruno Feijó Dept. de Informática, PUC-Rio

Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar um volume de dados muito grande Imagine ter que digitar n dados novamente por causa de um simples erro de digitação? A estratégia adequada para se trabalhar com grande volume de dados é fazer uso de arquivos de dados. Para que programas possam ler e salvar dados em um arquivo, é necessário ter acesso a um conjunto de funções que permitam realizar essas operações: No nosso curso, usaremos um conjunto de funções presentes na biblioteca stdio.h.

Funções de entrada e saída em arquivos Para que possamos ler ou escrever em um arquivo é necessário que antes o arquivo esteja aberto. Cada arquivo é identificado pelo seu nome, que normalmente é o nome do arquivo mais a extensão: exemplo.txt, cap8.ppt, saida.txt Para abrir um arquivo é necessário definir se o mesmo será utilizado para leitura (read) ou escrita (write): Para abrirmos um arquivo para leitura é necessário que o arquivo já exista. Quando abrimos um arquivo para escrita criamos um novo arquivo onde dados de saída serão escritos, ou sobrescrevemos um arquivo existente.

Funções de entrada e saída em arquivos Para abrir um arquivo, a biblioteca padrão oferece a função fopen. Esta função serve tanto para abrir um arquivo para leitura como para escrita. A função recebe dois parâmetros, o nome do arquivo que se deseja abrir e o modo de abertura: Leitura: "r" (read) Escrita: "w" (write). Esta função retorna um ponteiro para o tipo FILE definido na biblioteca. Um ponteiro é um tipo de variável que serve para armazenar endereços de memória. Exemplos no próximo slide

Declaração e Inicialização Declaração de uma variável do tipo ponteiro para FILE (no exemplo, o nome dado à variável é fp): FILE *fp; Inicialização: Abrindo o arquivo para leitura de dados: fp = fopen("entrada.txt", "r"); Abrindo o arquivo para escrita de dados: fp = fopen("saida.txt", "w"); O valor retornado pela função fopen deve ser passado como parâmetro para as demais funções para identificar em qual arquivo se deseja fazer a operação de entrada ou saída. Windows (diferentemente de Unix) nunca trata o caractere de end-offile de maneira especial e se preocupa apenas se a C runtime library depende ou não depende se o stream FILE sendo lido está no modo texto ou binário. Por isto, em programas portáteis, você deve sempre incluir o caractere b no string de modo para abrir arquivos binários: fp = fopen("image01.gif", "rb");

Se a abertura do arquivo não for bem sucedida, a função retorna o valor definido pela constante simbólica NULL: fp = fopen("entrada.txt", "r"); if (fp == NULL) printf("erro na abertura do arquivo.\n"); Declaração e Inicialização exit(1); exit(status) causa o término normal do programa e o status é retornado para o ambiente que chamou o programa (zero significa sucesso). Arquivos abertos são descarregados (flushed), streams são fechados, funções podem ser chamadas, e o controle retorna para o ambiente. Após realizar as operações de entrada e saída no arquivo, este deve ser fechado com o uso da função fclose.... fclose(fp);...

Leitura: fscanf A principal função da biblioteca padrão para leitura de arquivos chama-se fscanf, e é análoga à função scanf para captura de dados via teclado. int a; float b; FILE* fp = fopen("entrada.txt", "r");... fscanf(fp, "%d %f", &a, &b);... fclose(fp); A função fscanf tem como valor de retorno o número de parâmetros que foram lidos com sucesso (também vale para a função scanf).

Escrita: fprintf A principal função de saída em arquivo da biblioteca padrão chama-se fprintf, sendo análoga à função printf para saída na tela. A diferenca é que a função fprintf espera um primeiro parâmetro adicional que identifica o arquivo. int a ; float b ; FILE* fp = fopen("saida.txt", "w");... fprintf(fp, "Valores : %d %f \n", a, b);... fclose(fp); Obviamente os valores de a e b precisam ser definidos antes da chamada à função fprintf.

Exemplo #include <stdio.h> #include <stdlib.h> FILE * openfile(char * file, char * mode) FILE * f; if ((f = fopen(file, mode)) == NULL) printf("%s nao pode ser aberto\n", file); exit(1); return f; int main(void) int np, nalunos; float p1, p2, media; FILE * fin = openfile("c:\\temp\\notas.txt", "r"); FILE * fout = openfile("c:\\temp\\medias.txt", "w"); nalunos = 0; while (!feof(fin)) np = fscanf(fin, "%f %f", &p1, &p2); // np= 0,1,2 ou EOF if (np >= 0 && np < 2) printf("erro: apenas %d notas lidas com sucesso.", np); exit(2); Somente quando uma operação de leitura encontra um end of file é que o feof() retorna verdade (i.e. retorna 0). Então, o while ainda entra uma última vez para que fscanf encontre end of file e np retorne EOF (usualmente -1). fscanf retorna o número de itens convertidos e atribuídos corretamente (se ela ler 10.0 e A+ ao invés de 10.0 e 8.0, então retornará 1). Mas, lembre que fscanf tentará buscar o segundo item nas outras linhas. Por exemplo, linha 1: 10.0 linha 2: 2.0 3.0 p1 será 10.0 e p2 será 2.0. Continua no próximo slide

Exemplo Ao invés de usar while (!feof(fin)), haveria duas outras possibilidades mais diretas: (1) while (fscanf( ) == 2) (2) while (fscanf( )!= EOF) if (np == 2) Mas isto dificultaria lidar com todos os casos de erro. nalunos++; media = (p1 + p2) / 2; fprintf(fout, "%.1f ", media); if (media >= 5.0) fprintf(fout, "Aprovado\n"); else fprintf(fout, "Reprovado\n"); // end of while printf("%d alunos lidos\n", nalunos); fclose(fin); fclose(fout); return 0;