Cláudio C. Rodrigues Faculdade da Computação - UFU
|
|
|
- Oswaldo Ferrão Esteves
- 9 Há anos
- Visualizações:
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
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
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
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
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
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.
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
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/
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
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;
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
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
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.
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
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
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
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
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
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
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
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)
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
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
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
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
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,
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
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
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
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
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
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
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
