Arquivos Prof: Erivelto Tschoeke, Msc. –

Slides:



Advertisements
Apresentações semelhantes
TRATAMENTO DE ARQUIVOS EM C
Advertisements

Python: Entrada e Saída
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Processos no Unix e Linux
Prof. Luis Otavio Alvares
Modificadores de tipos e Arquivos
Prof. Flavio Marcello Strelow
Prof: Erivelto Tschoeke, Msc. –
Linguagem de Programação 1
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação Orientada a Objetos I Material IV-Bimestre Criando um.
Listas com Ponteiros Listas encadeadas Listas circulares.
Algoritmos e Estruturas de Dados II
Linguagem C Strings.
Armazenamento de Dados em Arquivos
Armazenamento de Dados em Arquivos
Ling. e Técnicas de Programação I 3º semestre Plano de Ensino 2011
Tratamento de Ficheiros
Algoritmos e Programação Thyago Maia Tavares de Farias Aula 25.
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 7 Strings Monitoria de Introdução à Programação
Ameliara Freire O comando de entrada de dados é utilizado quando desejamos fornecer um valor para um nosso programa. Os dispositivos.
Aula 4 Prof. Naércio Filho Técnico em Informática
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte IX
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
CADEIA DE CARACTERES (Strings)
Manipulação de Arquivos em C
Arquivos Continuação.
Streams –input e output
DAVID ANDERSON CARDOSO DANTAS
Aula Prática 12 Operações com Arquivos Monitoria
Curso de C/C++ Aula 4 Instrutor: Luiz Felipe Sotero
C APÍTULO II Armazenando e recuperando dados. A RMAZENANDO E RECUPERANDO DADOS Agenda Salvar dados Abrir um arquivo Criar e gravar Fechar Ler Bloquear.
Aula 13 - Armazenamento de Dados em Arquivos
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
ARQUIVOS.
Tratamento de ficheiros Abrir e fechar um ficheiro.
Aula prática 7 Strings Monitoria de Introdução à Programação
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
Aula Prática 11 Operações com Arquivos Monitoria
Algoritmos e Estruturas de Dados
Operações com Arquivos Monitoria A estrutura FILE  É como um tipo de dado, mas não é um tipo propriamente dito  Definido no arquivo cabeçalho.
Aula Prática 11 Operações com Arquivos Monitoria
Manipulando arquivos texto com C
Programação de Computadores I – Arquivos
Rotinas do BIOS e DOS Serviços de vídeo (INT 10H)
Salvando em Arquivos. Arquivos Um arquivo pode estar associado a qualquer dispositivo de entrada e saída, como por exemplo: teclado, video, impressora,
Curso Técnico em Informática Professor Igor Vale.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
1 Programação em C Aula Considere que um banco armazena em arquivo as seguintes informações de seus clientes: número da conta (int), nome do cliente.
Aula prática 7 Strings Monitoria de Introdução à Programação.
Felipe Nunes Flores – Programa de Educação Tutorial.
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Aula de Entrada / Saída Monitores: Alessandro Luna Leonardo Ribeiro Mardoqueu Vieira Mozart Araújo Filho.
Programação em C Aula 9.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”.
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Arquivos textos (text)
Felipe Nunes Flores – Programa de Educação Tutorial.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
Jean Carlo Mendes ** Slides baseados no material do prof. Dr Guilherme Tavares de Assis (UFOP)
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I
Transcrição da apresentação:

Arquivos Prof: Erivelto Tschoeke, Msc. – erivelto@sbs.udesc.br UDESC – Centro de Ensino do Planalto Norte Arquivos

Objetivos: Introdução Fluxos de Dados e Arquivos Fluxo de Texto Fluxo Binário Arquivos Funções de Entrada e Saída Início e Fim Abrindo um Arquivo Fechando um Arquivo Fim de Arquivo Volta ao Início Lendo e Escrevendo Caracteres Lendo e Escrevendo Cadeias de Caracteres Lendo e Escrevendo Arquivos Binários Entrada e Saída Formatada Exercícios

Introdução: Em C não existem comandos de Entrada e Saída, sendo estas tarefas executadas por funções especialmente criadas para esta finalidade e armazenadas em bibliotecas específicas.

Fluxos de Dados: Para isolar os programadores dos problemas de manipular os vários tipos de dispositivos de armazenamento e seus diferentes formatos a linguagem C utiliza o conceito de fluxo (stream) de dados. Todos os diferentes sistemas de arquivos se comportam da mesma maneira quando manipulados como um fluxo contínuo de dados.

Fluxo de dados: Dados podem ser manipulados em dois diferentes tipos de fluxos: Fluxos de texto; Fluxos binários.

Fluxo de texto Um fluxo de texto é composto por uma seqüência de caracteres, que pode ou não ser dividida em linhas terminadas por um caracter de final de linha. Um detalhe que deve ser considerado é que na última linha não é obrigatório o caracter de fim de linha.

Fluxo de texto Nem sempre a tradução entre a representação do caracter no fluxo de texto e no sistema de arquivos do computador hospedeiro é um para um. Por exemplo, entre UNIX e DOS há uma diferença na representação de final de linha que causa problemas na impressão de arquivos. Em UNIX um final de linha é representado pelo caracter de alimentação de linha.

Fluxo de texto Em DOS um final de linha é representado pelo par retorno de carro/alimentação de linha. Deste modo quando um arquivo gerado em UNIX vai para uma impressora que espera final de linha no modo DOS surge o que é comumente chamado de efeito escada. A impressão continua na linha seguinte mas sem voltar para o início da linha porque em UNIX o caracter de retorno de carro não é inserido no fluxo de texto.

Fluxo binário Um fluxo binário é composto por uma seqüência de bytes lidos, sem tradução, diretamente do dispositivo externo. Não ocorre nenhuma tradução e existe uma correspondência um para um entre os dados do dispositivo e os que estão no fluxo.

Arquivos: Arquivos podem ser acessados/enviados de qualquer dispositivo de Entrada e Saída como por exemplo: Impressoras; Disquetes; Discos rígidos; Unidades de fita; Pen-drives; Cartões de memória, etc.

Arquivos: Programas vêem os arquivos através de fluxos. Para que um determinado arquivo seja associado a um determinado fluxo é necessário que o arquivo seja aberto. Após esta operação o programa pode utilizar os dados armazenados no arquivo.

Arquivos: operações comuns Operações comuns em arquivos são: Abertura e fechamento de arquivos; Apaga um arquivo; Leitura e escrita de um caracter; Indicação de que o fim do arquivo foi atingido; Posicionar o arquivo em um ponto determinado.

Arquivos: observações importantes Obviamente algumas dessas funções não se aplicam a todos os tipos de dispositivos. Por exemplo, para uma impressora não é possível usar a função que reposiciona o arquivo no início. Um arquivo em disco permite acesso aleatório enquanto um arquivo de impressora não.

Continuação:  Ao final das operações necessárias o programa deve fechar o arquivo. Ao final da execução de um programa todos os arquivos associados são fechados automatica- mente e os conteúdos dos buffers são descarregados para o dispositivo externo. Caso o arquivo seja de entrada o conteúdo do buffer é esvaziado.

Funções de Entrada e Saída As funções de Entrada e Saída normalmente utilizadas pelos programadores estão armazenadas na biblioteca stdio.h. As funções mais comuns estão mostradas na tabela a seguir.

Funções de entrada e saída Função Descrição fopen() Abre um arquivo putc(), fputc() Escreve um caracter em um arquivo getc(), fgetc() Lê um caracter de um arquivo fprintf() Equivalente a printf(), usando stream sscanf() Equivalente a scanf(), usando string  fscanf() Equivalente a scanf(), usando stream  fseek() Posiciona o arquivo em um ponto específico rewind() Posiciona o arquivo no início feof() Retorna VERDADE se chegou ao fim do arquivo ferror() Verifica a ocorrência de erro fflush() Descarrega o buffer associado com o arquivo fread() Leitura de dados no modo binário fwrite() Escrita de dados no modo binário

Funções de entrada e saída Para ter acesso aos dados em um arquivo é necessário a definição de um ponteiro do tipo especial FILE. Este tipo também está definido na biblioteca stdio.h. Um ponteiro deste tipo permite que o programa tenha acesso a uma estrutura que armazena informações importantes sobre o arquivo. Para definir uma variável deste tipo o programa deve conter a seguinte declaração FILE *arq; Onde arq é o ponteiro que será usado para executar as operações no arquivo.

Início e fim As operações mostradas a seguir mostram operações que devem ser realizadas antes e depois de usar um arquivo (fopen() e fclose()). As outras duas funções servem para que o usuário possa detectar o fim de um arquivo ou voltar para seu início (feof() e rewind()).

Abrindo um Arquivo Antes de qualquer operação ser executada com o arquivo, ele deve ser aberto. Esta operação associa um fluxo de dados a um arquivo. Um arquivo pode ser aberto de diversas maneiras: leitura, escrita, leitura/escrita, adicão de texto, etc. A função utilizada para abrir o arquivo é chamada fopen() e tem o seguinte protótipo: FILE fopen (char *parq).

Abrindo um arquivo Onde parq é um ponteiro de arquivo para o arquivo a ser manipulado. Este ponteiro não deve ser modificado e a função retorna um ponteiro nulo (NULL) se o arquivo não puder ser aberto. A tabela a seguir lista os diversos modos que podem ser usados para abrir um arquivo.

Modos de abertura de um arquivo: Descrição r Abre um arquivo texto para leitura w Cria um arquivo texto para escrita a Adiciona texto ao fim de um arquivo texto rb Abre um arquivo binário para leitura wb Abre um arquivo binário para escrita ab Anexa a um arquivo binário r+ Abre um arquivo texto para leitura/escrita w+ Cria um arquivo texto para leitura/escrita a+ Cria ou anexa a um arquivo texto para leitura/escrita r+b Abre um arquivo binário para leitura/escrita Cria um arquivo binário para leitura/escrita a+b Anexa a um arquivo binário para leitura/escrita

Modos de abertura de um arquivo: Observar que se um arquivo for aberto com permissão de escrita todo o sue conteúdo anterior será apagado. Caso o arquivo não exista ele será criado. A maneira mais comum de abrir um arquivo está ilustrado no exemplo abaixo:     FILE *pa;     if (( pa = fopen ("arquivo.txt", "w")) == NULL ) {        printf("Desculpe, o arquivo nao pode ser aberto.");        exit(1);    }

Modos de abertura de um arquivo: Abrir um arquivo que já existe para escrita, implica em apagar todo o conteúdo anterior do arquivo e a preparação do arquivo para receber dados a partir de seu ponto inicial. Se o programador deseja acrescentar dados ao final de um arquivo já existente o modo de abertura deve ser a.

Fechando um arquivo: Um arquivo aberto por meio da função fopen() deve ser fechado com a função fclose() cujo protótipo é int fclose (FILE *parq); onde parq é um ponteiro de arquivo para o arquivo que deve ser fechado. Um valor zero de retorno significa que a operação foi executada com êxito, qualquer outro valor implica em erro.

Fechando um arquivo:  A operação fclose() implica em escrita no arquivo de qualquer dado que ainda não tenha sido escrito. Este ponto é importante de ser considerado porque em UNIX uma operação de escrita em um arquivo não ocorre imediatamente a emissão da ordem de escrita. O sistema operacional pode executar a ordem no momento que achar mais conveniente.

Fim de arquivo: A função feof() indica que um arquivo chegou ao seu final. A pergunta que pode surgir é a seguinte: Se já existe o valor EOF para indicar o final de arquivo por que precisamos de uma função extra do tipo feof()?

Fim de arquivo:  O problema é que EOF é um valor inteiro e ao ler arquivos binários este valor pode ser lido como parte do arquivo e não por ser o final do arquivo. A função feof() serve para indicar que o final de um arquivo binário foi encontrado. Naturalmente esta função pode ser aplicada também a arquivos texto. O protótipo da função é o seguinte: int feof(FILE *parq).

Voltar ao Início do arquivo: A função rewind() recoloca o indicador de posição de arquivo no inicio do arquivo. Uma operação semelhante ao que fazemos em uma fita cassete de música ou vídeo. O protótipo da função é o seguinte:   void rewind(FILE *parq).

Voltar ao Início do arquivo: É importante observar que o arquivo deve estar aberto em um modo que permita a execução das operações desejadas. Por exemplo, um arquivo aberto somente para escrita e em seguida rebobinado para o início, não irá permitir outra operação que não seja escrita.

Lendo e Escrevendo Caracteres As operações mais simples em arquivos são a leitura e escrita de caracteres. Para ler um caracter de um arquivo que foi previamente aberto pode se usar as funções getc() e fgetc(), que são equivalentes. O protótipo de fgetc é: int fgetc (FILE *parq);

Lendo e escrevendo caracteres: A função lê o caracter como um unsigned char mas retorna o valor como um inteiro, onde o byte mais significativo vale zero. A função devolve o código EOF ao chegar ao final do arquivo. O valor EOF também é um inteiro válido e portanto ao usar arquivos binários é necessário que a função feof() seja utilizada para verificar o final do arquivo.

Escrevendo caracteres  Para escrever caracteres há duas funções definidas putc() e fputc(). O protótipo da função fputc é o seguinte:     int fputc(int ch, FILE *parq). onde parq é um ponteiro de arquivo para o arquivo que foi previamente aberto por meio da função fopen() e ch é o caracter a ser escrito.

Primeiro programa Acesse C101ec.c: Neste primeiro programa usamos a função REWIND() para retornar ao início do programa, outra opção seria fechar e abrir o arquivo, pois sempre que um arquivo é aberto, ele fica posicionado no início do arquivo aguardando o comando seguinte. Acesse C101.c

Lendo e Escrevendo Cadeias de Caracteres As funções fgets() e fputs() servem para ler e escrever cadeias de caracteres em arquivos.  A função fgets() lê uma cadeia de caracteres do fluxo especificado até que um caracter de nova linha seja encontrada. Observar que diferentemente de gets() o caracter de nova linha encontrado passa a fazer parte da cadeia que recebe um caracter nulo ao seu final. O exemplo c10les.c, mostra um exemplo de uso das funções para ler e escrever cadeias de caracteres em um arquivo.