Métodos Computacionais. Arquivos
|
|
|
- Igor Coimbra Lima
- 9 Há anos
- Visualizações:
Transcrição
1 Métodos Computacionais Arquivos
2 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 de informação (arquivos e diretórios),em vez de endereços de memória Acesso às informações são mais lentos 2
3 Persistência... pra quê? Não perder os dados no fim da execução de um programa Memória temporária(volatil) principal Mais rápida e cara Memória permanente secundária mais lenta e barata Para melhorar velocidade de acesso, a cada acesso, transfere-se trechos maiores do arquivo para espaços da memória (buffers) 3
4 Modos de Acesso a Arquivos em C Dois modos de acesso: Texto e Binário String Informação persistida Arquivo Texto: Arquivo Binario: Inteiros 4
5 Modo Texto É interpretado como uma seqüência de caracteres agrupadas em linhas Linhas são separadas por um caractere de nova linha Vantagens: Pode ser lido facilmente por uma pessoa Editado por editores de texto convencionais Desvantagens Codificação dos caracteres pode variar (ASCII, UTF- 8, ISSO-8859, etc) Arquivos tendem a ser maiores (todas os dados são convertidos para caracteres) 5
6 Modo Binário Dados são armazenados da mesma forma que são armazenados na memória principal Vantagens: Facilmente interpretados por programas Maior velocidade de manipulação Arquivos são, geralmente, mais compactos Desvantagens: Difícil de serem entendidos por pessoas Dependentes da máquina onde foram gerados 6
7 Operações em Arquivos Abertura Sistema Operacional (SO) encontra arquivo pelo nome Prepara buffer na memória Leitura SO recupera trecho solicitado do arquivo Parte ou todo trecho pode vir do buffer 7
8 Operações em Arquivos Escrita SO altera conteúdo do arquivo Alteração é feita primeiro no buffer para depois ser transferida para o disco Fechamento Informação do buffer é atualizada no disco Área do buffer utilizada na memória é liberada 8
9 Abertura de Arquivos em C Operações de manipulação de arquivos em C se encontram, geralmente, na stdio.h Função de Abertura FILE* fopen(char* nome,char* modo); Nome Nome do arquivo FILE Tipo que representa uma abstração do arquivo modo r - Indica leitura w Indica escrita a Indica escrita ao final do existente t Indica modo texto b Indica modo binário 9
10 Abertura de Arquivos em C SO mantém um cursor que indica a posição de trabalho no arquivo Se modo w e arquivo já existe Arquivo é destruído e um novo vazio é criado Se modo w ou a e arquivo não existe Um novo arquivo é criado No modo r, o arquivo já deve existir Modos t e b podem ser combinados com os demais modos Se não for possível a abertura, a função retorna NULL 10
11 Exemplos de Abertura de Arquivos FILE *fp; fp = fopen( teste.txt, rt ); Modo leitura e texto fp = fopen( teste.bin, wb ); fp = fopen( teste.txt, r+ ); fp = fopen( teste.txt, w+ ); Modo escrita e binário Modo leitura e escrita em arquivo existente Modo escrita e leitura em arquivo novo Modos t e b podem ser omitidos 11
12 Fechamento de Arquivos Após leitura/escrita do arquivo, devemos fechálo Função de fechamento int fclose(file* fp); Retorna 0 se o arquivo foi fechado com sucesso Retorna constante EOF se houve algum erro 12
13 Leitura (Modo Texto) A cada operação de leitura, os dados correspondentes são transferidos para a memória e o cursor avança e aponta para o próximo dado Existe em C a função fscanf para ler dados de um arquivo modo texto Similar a scanf Lê de um arquivo passado como parâmetro em vez de somente da entrada padrão (teclado) Pode ler também da entrada padrão (arquivo stdin) 13
14 Leitura com fscanf int fscanf(file* fp, char* formato,end_variaveis) Retorna número de dados lidos com sucesso fp é o ponteiro para o arquivo formato equivale aos códigos de formatação (iguais ao do scanf) end_variaveis corresponde a lista de endereços de variáveis que armazenarão os dados lidos do arquivo 14
15 Usando fscanf para Leitura (Modo Texto) #include <stdio.h> int main() { FILE *fp; char primeirapalavra[121]; fp = fopen( teste.txt, r ); if (fp == NULL) { printf( Impossível abrir arquivo ); exit(1); fscanf(fp, %120s,primeiraPalavra); printf( A primeira palavra do arquivo teste.txt é: %s\n,primeirapalavra); fclose(fp); return 0; Lê uma string do arquivo apontado por fp de até 120 caracteres e armazena em primeirapalavra 15
16 Outras Funções de Leitura (Modo Texto) int fgetc(file* fp); Lê um caractere de um arquivo Retorna o código do caractere lido Retorna EOF se fim do arquivo for alcançado char* fgets(char* s, int n, FILE* fp); s é a cadeia de caracteres que armazenará o que for lido n é o número máximo de caracteres a serem lidos Lê uma seqüencia de caracteres até que \n seja encontrado ou que n caracteres tenham sido lidos Retorna ponteiro para a cadeia s 16
17 #include <stdio.h> int main() { Usando fgetc para a Leitura FILE *fp; char c;int ncaracteres = 0, nlinhas = 0; fp = fopen( teste.txt, r ); if (fp == NULL) { printf( Impossível abrir arquivo ); exit(1); while ((c = fgetc(fp))!= EOF) { if (c == \n ) nlinhas++; else ncaracteres++; printf( Caracteres:%d,Linhas:%d\n,nCaracteres,nLinhas); fclose(fp); return 0; Programa conta número de caracteres e conta o número de linhas de um arquivo 17
18 Usando fgets para a Leitura int main() { Programa conta ocorrências de uma palavra em um FILE *fp; arquivo com linhas de no maximo 120 caracteres int nocorrencias = 0; char palavra[121], linha [121]; printf ( Digite a palavra:\n ); scanf( %120[^\n],palavra); fp = fopen( teste.txt, r ); if (fp == NULL) { printf( Impossível abrir arquivo ); exit(1); while (fgets(linha,121,fp)!= NULL) { if (strstr(linha,palavra)!= NULL) nocorrencias++; Utiliza função strstr de string.h para fclose(fp); saber se palavra é substring de linha printf( Ocorrências de %s = %d\n, palavra,nocorrencias); return 0; Lê uma linha e armazena em linha 18
19 Escrita (Modo Texto) A cada operação de escrita, os dados são gravados na memória e posteriormente no disco, e o cursor avança apontando para a proxima posição do arquivo: Existe em C a função fprintf para escrever dados em um arquivo modo texto Similar a printf Escreve em um arquivo passado como parâmetro em vez de somente na saída padrão (monitor) Pode escrever também na saída padrão (arquivo stdout) 19
20 Leitura com fprintf int fprintf(file* fp, char* formato,variaveis) Retorna número de dados escritos com sucesso fp é o ponteiro para o arquivo formato equivale aos códigos de formatação (iguais ao do printf) variaveis corresponde a lista de variáveis, cujos conteúdos serão escritos no arquivo 20
21 #include <stdio.h> int main() { FILE *fp; char palavra[121]; fp = fopen( teste.txt, w ); if (fp == NULL) { printf( Impossível abrir arquivo ); exit(1); printf ( Digite a palavra:\n ); scanf( %120[^\n],palavra); fprintf(fp, %s\n,palavra); fclose(fp); return 0; Usando fprintf para Escrita (Modo Texto) Programa escreve uma palavra de no máximo 120 caracteres em um arquivo 21
22 Outras Funções de Escrita (Modo Texto) int fputc(file* fp, char c); Escreve um caractere de um arquivo Retorna o código do caractere escrito Retorna EOF se fim do arquivo for alcançado char* fputs(char* s,file* fp); s é a cadeia de caracteres que será escrita Retorna ponteiro para a cadeia s 22
23 Usando fputs e fputc para Escrita int main() { Programa lê um arquivo e gera outro com FILE *e; FILE *s; todas as letras convertidas para maiusculas int caractere; char nome_entrada[121]; printf ( Digite o nome do arquivo de entrada:\n ); scanf( %120s, nome_entrada); e = fopen(nome_entrada, r ); if (e== NULL) { printf( Impossível abrir arquivo de entrada );exit(1); s = fopen(strcat(nome_entrada, _maiuscula ), w ); if (s== NULL) { printf( Impossível abrir arquivo de saida );exit(1); while ((caractere = fgetc(e))!= EOF) fputc(toupper(caractere),s); fputs( \narquivo Convertido!,s); fclose(e); fclose(s); return 0; Usuário fornece o nome do arquivo Converte caractere a caractere e escreve no arquivo 23
24 Leitura (Modo Binário) int fread(void* p,int tam,int nelem,file* fp); p é o endereço de memória em que vai ser armazenado o que for lido tam é o tamanho em bytes de cada elemento lido nelem é o número de elementos de tamanho tam lidos Retorna a quantidade de bytes lidos com sucesso (tam * nelem) 24
25 Escrita (Modo Binário) int fwrite(void* p,int tam,int nelem,file* fp); p é o endereço de memória cujo conteúdo deseja-se salvar em arquivo tam é o tamanho em bytes de cada elemento escrito nelem é o número de elementos de tamanho tam escritos Retorna a quantidade de bytes escritos com sucesso (tam * nelem) 25
26 Usando fwrite na Escrita #include <stdio.h> typedef struct ponto { float x,y; Ponto; Número de pontos do vetor void salva (char* arquivo, int n, Ponto* vet) { FILE* fp = fopen(arquivo, wb ); if (fp == NULL) { printf( Erro na abertura do arquivo.\n ); exit(1); fwrite(vet, sizeof(ponto), n, fp); fclose(fp); Função que salva um vetor de pontos em um arquivo binário 26
27 Usando fread na Leitura void carrega (char* arquivo, int n, Ponto* vet) { FILE* fp = fopen (arquivo, rb ); if (fp == NULL) { printf( Erro na abetura do arquivo.\n ); exit(1); fread (vet, sizeof(ponto), n, fp); fclose(fp); Função que recupera um vetor de pontos de um arquivo binário 27
28 Usando as Funções Definidas Anteriormente int main() { Ponto *entrada, *saida; int npontos, cont,pos ; FILE *arquivo; char nome_arquivo[121]; printf( Digite o nome do arquivo:\n ); scanf( %120s,nome_arquivo); printf( \ndigite o número de pontos:\n ); scanf( %d,&npontos); entrada = (Ponto *) malloc(npontos*sizeof(ponto)); for (cont = 0; cont < npontos;cont++) { printf( Digite coordenadas x,y:\n ); scanf( %f%f,&entrada[cont].x,&entrada[cont].y); /* continua */ Programa que salva e recupera um vetor de pontos em um arquivo binário 28
29 Usando as Funções Definidas Anteriormente salva(nome_arquivo, npontos, entrada); do { printf( Digite agora a posição do ponto que deseja ver: \n ); Gravando os pontos no scanf( %d,&pos); arquivo while (pos > npontos pos<=0 ); saida = (Ponto *) malloc (npontos*sizeof(ponto)); carrega(nome_arquivo, npontos, saida); printf( O ponto na posicao %d é {%f,%f\n, pos, saida[pos-1].x, saida[pos-1].y); Lendo os pontos do arquivo 29
30 Funções Utilitárias long ftell(file* fp); Retorna a posição atual do cursor do arquivo Corresponde a distancia em bytes em relação ao começo do arquivo Devem ser utilizadas com cautela em arquivos no modo texto, pois nem sempre o posicionamento do cursor vai ser o desejado Certas plataformas podem colocar caracteres de formatação não visíveis que podem alterar o tamanho do arquivo (número de bytes) 30
31 Funções Utilitárias long fseek(file* fp,long dist,int origem); Utilizada para posicionamento do cursor em um arquivo dist é o número de bytes em relação a origem origem é uma posição do cursor do arquivo em bytes (SEEK_CUR posição corrente; SEEK_SET início do arquivo; SEEK_END final do arquivo) Retorna a nova posição do cursor 31
32 Funções Utilitárias Função que recupera o i-ésimo ponto armazenado em um arquivo Ponto le_ponto (FILE* fp, int i) { Ponto p; fseek (fp, i*sizeof(ponto), SEEK_SET); fread(&p, sizeof(ponto), 1, fp); return p; Função que retorna o tamanho do arquivo em bytes int tamanho_arquivo (FILE *fp) { int tamanho; fseek (fp, 0, SEEK_END); tamanho =ftell (fp); return tamanho; 32
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)
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
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 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
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
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
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
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
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
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: 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
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/
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
14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1
14. Arquivos W. Celes e J. L. Rangel Neste capítulo, apresentaremos alguns conceitos básicos sobre arquivos, e alguns detalhes da forma de tratamento de arquivos em disco na linguagem C. A finalidade desta
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
INF 1620 P2-14/10/05 Questão 1 Nome:
INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome
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
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
Estruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Arquivos ESTRUTURAS DE DADOS Técnicas para que possamos salvar e recuperar informações em arquivos de maneira estruturada. Assim será possível implementar
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
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
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
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
INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1
INF1005: Programação 1 Arquivos 02/05/10 (c) Paula Rodrigues 1 Tópicos Principais Motivação Abertura e fechamento de arquivos Leitura com fscanf Escrita com fprintf 08/03/10 (c) Paula Rodrigues 2 Motivação
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
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
INF 1620 P3-02/07/02 Questão 1 Nome:
INF 1620 P3-02/07/02 Questão 1 Considere um arquivo texto que contém os nomes e as notas dos alunos de uma disciplina. As informações de cada aluno ocupam duas linhas do arquivo: a primeira linha contém
Capítulo 6: Arquivos
Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de
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
INF 1620 P4 30/06/07 Questão 1 Nome:
INF 1620 P4 30/06/07 Questão 1 O maior divisor comum (MDC) de dois números inteiros é o maior número inteiro que faz uma divisão exata (com resto zero) desses dois números. Por exemplo, o MDC de 32 e 40
INF 1620 P1-18/09/04 Questão 1 Nome:
INF 1620 P1-18/09/04 Questão 1 Considerando a definição da série harmônica abaixo: H n =1+ 1 2 + 1 3 + 1 4 + 1 5 + K+ 1 n (a) Escreva uma função que calcule o valor de H n dado o número de termos da série
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.
