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

Tamanho: px
Começar a partir da página:

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

Transcrição

1 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.

2 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

3 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.

4 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

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

6 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

7 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.

8 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.

9 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.

10 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

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

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

13 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, Evaristo, J., Aprendendo a programar programando em linguagem C, Book Express, 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, Faculdade da Computação - UFU 26

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

Arquivos em C Parte 2

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 Parte 2 Profa Rosana Braga Material preparado pela profa Silvana Maria Affonso de Lara 1º semestre de

Leia mais

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

Computação 2. Aula 8. Profª. Fabiany Arquivos Computação 2 Aula 8 Arquivos Profª. Fabiany [email protected] E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca

Leia mais

Aula 16: Manipulação de Arquivos em C

Aula 16: Manipulação de Arquivos em C Aula 16: Manipulação de Arquivos em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Manipulação de Arquivos Programação de Computadores IV 1 / 33

Leia mais

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS LINGUAGEM C: ARQUIVOS Prof. André Backes ARQUIVOS Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial; Acesso

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Manipulação de Arquivos Devemos iniciar nossa explanação pelo conceito de arquivo: Arquivo é uma unidade lógica utilizada para armazenar dados em disco ou em qualquer outro dispositivo externo de armazenamento.

Leia mais

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

Existe uma quantidade de informação que pode ser armazenada para resolver o problema. Arquivos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem sempre é conveniente. Problemas: A informação é perdida; As estruturas de dados são

Leia mais

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

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2015 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/

Leia mais

Métodos Computacionais. Arquivos

Métodos Computacionais. Arquivos Métodos Computacionais Arquivos Arquivos Um arquivo representa um elemento de informação armazenado em memória secundária (disco) Características: Informações são persistidas Atribui-se nomes aos elementos

Leia mais

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS LINGUAGEM C: ARQUIVOS Prof. André Backes Arquivos 2 Por que usar arquivos? Permitem armazenar grande quantidade de informação; Persistência dos dados (disco); Acesso aos dados poder ser não seqüencial;

Leia mais

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

Linguagem C. Armazenamento de Dados em Arquivos - Continuação Linguagem C Armazenamento de Dados em Arquivos - Continuação Arquivos Binários Comandos para gravação e leitura de arquivos (revisão): FILE *arquivo; arquivo = fopen( nome, modo ); fwrite (&variavel, sizeof

Leia mais

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

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos Aula: ARQUIVOS Introdução à Ciência da Computação I Simone Senger Souza ICMC/USP São Carlos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem

Leia mais

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

Depuração e Teste de programas C C Depuração e teste de programas C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Depuração e Teste de programas C C Depuração e teste de programas C Profa Rosana Braga (adaptado de material do prof.

Leia mais

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

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos: CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta

Leia mais

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.

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. 1 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. O programa recebe inteiros, através da entrada padrão, e os insere

Leia mais

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

Structs, Ponteiros e Arquivos. Prof. Maurício Dias Structs, Ponteiros e Arquivos Prof. Maurício Dias Registros e structs Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos

Leia mais

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

Alocação Dinâmica de Memória - Exercício Alocação Dinâmica de Memória - Exercício Construa um programa que leia da entrada padrão o número de linhas e de colunas de uma matriz de floats, aloque espaço dinamicamente para esta e a inicialize, com

Leia mais

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

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo

Leia mais

Manipulação de Arquivos

Manipulação de Arquivos Manipulação de Arquivos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Tipo

Leia mais

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

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Aula 12 Arquivos Texto e Binário Prof: Luciano Barbosa Relembrando a Arquitetura Básica de um Computador Até agora, toda a informação armazenada por nossos programas estava na memória

Leia mais

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

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 15 - Arquivos 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

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

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan Arquivos em C Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan Há várias definições para arquivos em computação. Uma das mais usadas é a de que um arquivo é um conjunto de registros

Leia mais

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

Linguagem C arquivos. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná Linguagem C arquivos IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Ponteiros

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Linguagem C: Arquivo-Texto

Linguagem C: Arquivo-Texto Prof. Paulo R. S. L. Coelho [email protected] Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução em C 2 3 Organização Introdução em C 1 Introdução em C 2 3 Introdução

Leia mais

Programação de Computadores I. Linguagem C Arquivos

Programação de Computadores I. Linguagem C Arquivos Linguagem C Arquivos Prof. Edwar Saliba Júnior Novembro de 2011 Unidade 12 Arquivos 1 Trabalhando com Arquivos Um arquivo em Linguagem C pode representar diversas coisas, como: arquivos em disco, uma impressora,

Leia mais

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ARQUIVOS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ARQUIVO Arquivo é um conjunto de dados, dispostos de forma sequencial Arquivo Programa INSTITUTO DE COMPUTAÇÃO - UFF 2 STREAM Leitura e

Leia mais

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

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

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros

Leia mais

Manipulação de Arquivos em C

Manipulação de Arquivos em C Manipulação de Arquivos em C 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni [email protected] Introdução Até agora temos utilizado

Leia mais

Linguagem de Programação C. Arquivos

Linguagem de Programação C. Arquivos Arquivos Cristiano Lehrer Introdução Em C um arquivo é apenas um conjunto de bytes colocados uns após os outros de forma sequencial: Utilização de arquivos: Fonte de dados para o programa: Trata-se de

Leia mais

Elementos de programação em C

Elementos de programação em C Elementos de programação em C Entrada e saída: arquivos Francisco A. C. Pinheiro, Elementos de Programação em C, Bookman, 2012. Visite os sítios do livro para obter material adicional: www.bookman.com.br

Leia mais

Capítulo 06: Arquivos

Capítulo 06: Arquivos Capítulo 06: Arquivos INF1004 e INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Funções de entrada e saída em arquivos Motivação: quando um programa precisa processar

Leia mais