Cláudio C. Rodrigues Faculdade da Computação - UFU



Documentos relacionados
Arquivos em C Parte 2

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

13a. Aula Manipulação de arquivos

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

Aula 16: Manipulação de Arquivos em C

LINGUAGEM C: ARQUIVOS

Manipulação de Arquivos

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

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:

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

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

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

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

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

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

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

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

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

Métodos Computacionais. Arquivos

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

LINGUAGEM C: ARQUIVOS

Algoritmos e Estruturas de Dados II IEC013

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

Arquivos em C. Material da Prof. Ana Eliza

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

TÉCNICAS DE PROGRAMAÇÃO

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

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

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

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

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

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

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

Programação de Computadores

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

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

Programação de Computadores II

Alocação Dinâmica de Memória - Exercício Escreva um programa em C que manipule um vetor de inteiros não nulos alocado dinamicamente.

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

Structs, Ponteiros e Arquivos. Prof. Maurício Dias

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

Fundamentos de Programação 1

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

Manipulação de Arquivos

Outline. 33. Manipulação de arquivos DIM

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

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

Operações em Arquivos. MC102 Felipe Bergo

Manipulação de Arquivos

Manipulação de arquivos

Linguagem de Programação

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

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

Introdução a Programação. Arquivos

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

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

Sequência de informações binárias armazenadas num dispositivo de armazenamento permanente. Em geral os bits são agrupados em grupos de 8 (1 byte)

Sumário. Ficheiros. Ficheiros

Fundamentos de Programação

1 Arquivos em C. CEFETES Serra - Programação II Mateus Costa Notas de Aula - Arquivos

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

Programação II. Arquivos - Conceito. Arquivos

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

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

Linguagem C: Arquivo-Texto

Aula 16. Ficheiros de texto

Entrad Entrada / Saíd a / Saída

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

Manipulação de Arquivos

Programação de Computadores I. Linguagem C Arquivos

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

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

Linguagem C Ficheiros Compilação Separada

1/22 FICHEIROS BINÁRIOS

DICA: Preste bastante atenção nas funções de manipulação de arquivos e verás que você já utiliza arquivos desde a primeira aula.

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

Faculdade de Computação

Arquivos. Estruturas de Dados II Vanessa Braganholo

Manipulação de Arquivos em C

Computação Eletronica: Arquivos (Introdução)

Arquivos. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Prof. Neucimar J. Leite. 3 de março de 2007

Linguagem de Programação C. Arquivos

O que é a modularização

Elementos de programação em C

Manipulação de Arquivos

1 Escrita de Arquivos Binário

Capítulo 06: Arquivos

Manipulação de Ficheiros

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 {

1/24 FICHEIROS DE TEXTO

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

Transcrição:

Cláudio C. Rodrigues Faculdade da Computação - UFU LINGUAGEM C 07: ARQUIVOS Trabalhando com arquivos O sistema de entrada e saída do ANSI C é composto por uma série de funções cujos protótipos estão reunidos em stdio.h. Todas estas funções trabalham com o conceito de "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando o comando typedef. Podemos declarar um ponteiro de arquivo da seguinte maneira: FILE *fd; fd" será então um ponteiro para um arquivo (descritor de arquivo). É usando este tipo de ponteiro que vamos poder manipular arquivos no C.

Abrindo arquivos FILE *fopen (char *nome_arq,char *modo); O parâmetro "nome_arq": é o nome e o local onde o arquivo se encontra ou, se for criado, onde o arquivo deve ser armazenado. O parâmetro "*modo": especifica como o arquivo deve ser aberto. No próximo slide apresentamos uma tabela com os modos de acesso possíveis: Modos de acesso Modo r w a rb wb ab r+ w+ a+ Significado Abre Arquivo de Texto para Leitura Cria Arquivo de Texto para Gravação Anexa a um Arquivo de Texto Abre Arquivo Binário para Leitura Cria Arquivo Binário para Gravação Anexa a um Arquivo Binário Abre Arquivo de Texto para Leitura/Gravação Cria Arquivo de Texto para Leitura/Gravação Abre ou Cria Arquivo de Texto para Leitura/Gravação r+b Abre Arquivo Binário para Leitura/Gravação w+b Cria Arquivo Binário para Leitura/Gravação a+b Abre ou Cria Arquivo Binário para Leitura/Gravação

fopen( ) A função fopen tem duas finalidades: - abrir uma fila de bytes - ligar um arquivo em disco àquela fila FILE *fopen(char *NomeArquivo, char *modo); Exemplo: FILE *fd; if ((fd= fopen( teste, w )) == NULL) { puts( Não posso abrir o Arquivo teste.\n ); exit(1); /* força o término da execução da rotina */ Introdução Linguagem C Fechando arquivos Função fclose() fecha um arquivo anteriormente aberto. int fclose (FILE *fd); O ponteiro fd passado à função fclose() determina o arquivo a ser fechado. A função retorna o valor zero se o fechamento do arquivo for bem sucedido.

Exemplo 1: Abrindo e fechando um arquivo #include <stdio.h> int main() { char *str1 = "/tmp/texto.txt"; FILE *fd; /* Declaração da estrutura */ fd=fopen (str1,"wb"); /* o arquivo se chama texto.txt está localizado no diretório /tmp */ if (!fd) printf ("Erro na abertura do arquivo."); else printf("arquivo aberto com sucesso."); fclose(fd); A condição!fd testa se o arquivo foi aberto com sucesso, porque no caso dê um erro, a função fopen() retorna um ponteiro nulo (NULL). Escrevendo caracteres em Arquivos Função putc() - escreve um caractere no arquivo previamente aberto int putc(int ch, FILE *fd); ch é o caracter a ser gravado fd é o ponteiro devolvido por fopen() Exemplo: putc( a, arquivo); Introdução Linguagem C

Lendo Caracteres de Arquivos Função getc() - retorna um caractere lido do arquivo. int getc(file *arquivo); Exemplo: ch = getc(arquivo); while (ch!= EOF) ch = getc(arquivo); Introdução Linguagem C Exemplo 2: int main() { FILE *arq; char ch; if ((arq=fopen( teste.dat, r )) == NULL) { printf( Arquivo não pode ser criado\n ); exit(1); do{ ch=getchar(); putc(ch,arq); while (ch!=0); fclose(arq); return 0;

Outras Funções para Arquivos feof() - retorna não-zero se o arquivo chegou ao EOF, caso contrário retorna zero. EOF ( end of file") - indica o fim de um arquivo. Às vezes é necessário verificar se um arquivo chegou ao fim, para isto podemos usar a função feof(). int feof (FILE *fp); ferror() - determina se a operação de arquivo produziu um erro. int ferror(file *fp); Introdução Linguagem C Outras Funções para Arquivos fseek() - Posiciona o arquivo em um ponto específico. int fseek(file *fp, long numbytes, int origem); origem pode ser: Começo do arquivo SEEK_SET 0 Posição corrente SEEK_CUR 1 Fim do arquivo SEEK_END 2 rewind() - reinicia o arquivo, ou seja movimenta o ponteiro do arquivo para seu início. void rewind(file *fp); Introdução Linguagem C

Lendo e escrevendo em um arquivo usando fprintf e fscanf Função fprintf () Escreve uma sequência de caracteres em um arquivo, essa função funciona como printf. A diferença é a saída padrão, que em fprintf é um arquivo e em printf é o monitor. int fprintf (FILE *fp, const char *format,...); "FILE *fp" - o arquivo a ser escrito. "const char *format" - o que será escrito. Lendo e escrevendo em um arquivo usando fprintf e fscanf Função fscanf() Lê uma constante de caracteres de um arquivo, essa função funciona como scanf. A diferença é a entrada padrão que em fscanf é um arquivo e em scanf é o teclado. em scanf é o teclado. int fscanf(file *fp, const char *format,...); "FILE *fp" - o arquivo a ser lido. "const char *format" - qual a variável que receberá os dados do arquivo.

Exemplo 3: #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char s[50],c; /* Lê um nome para o arquivo a ser aberto: */ printf("\n\n Digite o caminho completo inclusive o nome para o arquivo:\n"); gets(s); /* Caso ocorra algum erro na abertura do arquivo o programa será finalizado */ if (!(fp = fopen(s,"w"))) { printf("erro! Impossível abrir o arquivo!\n"); exit(1); /* Se não houve erro, escreve no arquivo...*/ fprintf(fp,"este e um arquivo chamado:\n%s\n", s); fclose(fp); /* fecha o arquivo */ /* abre novamente para a leitura */ fp = fopen(s,"r"); while (!feof(fp)) { fscanf(fp,"%c",&c); printf("%c",c); fclose(fp); return(0); Arquivos pré-definidos Ao iniciar a execução de um programa, o sistema automaticamente abre alguns arquivos pré-definidos: stdin: stdout: stderr: stdaux: stdprn: dispositivo de entrada padrão (geralmente o teclado); dispositivo de saída padrão (geralmente o vídeo); dispositivo de saída de erro padrão (geralmente o vídeo); dispositivo de saída auxiliar (associado à porta serial); dispositivo de impressão padrão (associado à porta paralela). Cada uma destas constantes pode ser utilizada como um ponteiro para FILE, para acessar os periféricos associados a eles. Por exemplo: c =getc(stdin); para efetuar a leitura de um caracter a partir do teclado, ou: putc(c, stdout); para imprimí-lo na tela.

Leitura e escrita de Strings Função fgets() Lê uma string de um arquivo. A função lê a string até que um caracter de nova linha seja lido /n ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha for lido, ele fará parte da string, o que não acontecia com gets. A string resultante sempre terminará com /0 (por isto somente tamanho-1 caracteres, no máximo, serão lidos). char *fgets (char *str, int tamanho, FILE *fp); "char *str": a variável que receberá a string. "int tamanho": limite de caracteres lidos. "FILE *fp": o arquivo que será lido. Leitura e escrita de Strings Função fputs() Escreve uma string em um arquivo. Esta função aceita um vetor de caracteres e um ponteiro para um objeto FILE (arquivo de escrita). Se o texto for escrito com sucesso um valor inteiro diferente de zero é retornado. Se houver erro na escrita, o valor EOF é retornado. int fputs (char *str, FILE *fp); "char *str": a variável que contém os dados a serem escritos no arquivo.. "FILE *fp": o arquivo que será escrito.

Leitura e Escrita em blocos Função fread() Leitura de bloco de dados. unsigned fread (void *buffer, int numero_bytes, int count, FILE *fp); "void *buffer" variável que armazena os dados lidos. "int numero_de_bytes" - o número de bytes a ser lido. "int count" - indica quantas unidades devem ser lidas. "FILE *fp" - arquivo a ser lido. Introdução Linguagem C Leitura e Escrita em blocos Função fwrite() Escrita de bloco de dados. unsigned fwrite(void *buffer, int numero_bytes, int count, FILE *fp); "void *buffer" variável que armazena os dados a serem escritos. "int numero_de_bytes" - o número de bytes a ser escrito. "int count" - indica quantas unidades devem ser escritas. "FILE *fp" - arquivo a ser escrito. Introdução Linguagem C

Exemplo 4: int main() { FILE *fp; float f = 12.23; if ((fp=fopen( teste, wb )) == NULL) { printf( Arquivo não pode ser criado\n ); exit(1); fwrite(&f,sizeof(float(),1,fp); fclose(fp); return 0; Exemplo 5: Leitura de um caracter em um arquivo binário int main() { FILE *fp; if ((fp=fopen( teste, rb )) == NULL) { printf( O arquivo não pode ser aberto\n ); exit(1); /* L força que seja um inteiro longo */ fseek(fp,234l,0); /* lê o caracter 234 */ return getc(fp);

Exemplo 5: Arquivo Cadastro Leitor() { FILE *fp; int i; if ((fp=fopen( LISTA.DAT, rb )) == NULL) { puts( Falha na Abertura do Arquivo! ); return; inicia_matriz(); for (i=0; i < 100; i++) if (fread(&matriz[i], sizeof(struct registro), 1, fp)!= 1) { if (feof(fp)) { fclose(fp); return; else { puts( Erro de Leitura! ); fclose(fp); return; Exemplo 5: Arquivo Cadastro Escritor() { FILE *fp; int i; if ((fp=fopen( LISTA.DAT, wb ))==NULL) { puts( Falhou Abertura! ); return; for (i=0;i<100;i++) if (*matriz[i].nome) if(fwrite(&matriz[i], sizeof(struct registro), 1,fp)!= 1) puts( Falha na Gravacao! ); fclose(fp);

Exemplo 6: Cópia de Arquivos #include stdio.h int main(int argc,char* argv[]) { FILE *in, *out; char ch; if (arg!= 3) { printf( Digite o Nome dos Arquivos\n ); exit(1); if ((in=fopen(argv[1], rb )) == NULL) { printf( Arquivo origem não existe\n ); exit(1); if ((out=fopen(argv[2], wb )) == NULL) { printf( Arquivo destino não existe\n ); exit(1); while (! feof(in)) putc(getc(in),out); /* esta é a cópia propriamente dita */ fclose(in); fclose(out); return 0; Bibliografia Pereira, S.L., Linguagem C Distribuição gratuita Schildt, H., C Completo e Total, Editora Makron Books do Brasil Editora Ltda, 1996. Evaristo, J., Aprendendo a programar programando em linguagem C, Book Express, 2001. Mizrahi, V. V., Treinamento em Linguagem C, Curso Completo, Módulos 1 e 2, Makron Books do Brasil Editora Ltda,1990. Kernighan, B.W & Ritchie, D. M., C a Linguagem de Programação, Editora Campus, 1986. Faculdade da Computação - UFU 26

Dúvidas? Faculdade da Computação - UFU 27