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

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

Manipulação de Arquivos

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

Manipulação de Arquivos

Métodos Computacionais. Arquivos

Linguagem C: Arquivo-Texto

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

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

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

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

LINGUAGEM C: ARQUIVOS

LINGUAGEM C: ARQUIVOS

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

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

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

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)

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

Manipulação de Arquivos

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.

Programação II. Arquivos - Conceito. Arquivos

Algoritmos e Estruturas de Dados II IEC013

Outline. 33. Manipulação de arquivos DIM

Manipulação de arquivos

Linguagem C Ficheiros Compilação Separada

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

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

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

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

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

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

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

Manipulação de Arquivos em C

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

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

Linguagem de Programação C. Arquivos

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

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

INF 1620 P3-02/07/02 Questão 1 Nome:

Arquivos Binários UFOP 1/25

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

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Introdução à Programação

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

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

Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II

Aula 16. Ficheiros de texto

Capítulo 06: Arquivos

Manipulação de Arquivos

Aula de Arquivos. Jesimar da Silva Arantes. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos, SP

Manipulação de Arquivos

Introdução à Computação II AULA 08 BCC Noturno - EMA896115B

Capítulo 6: Arquivos

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

CCO 016 / COM 110 Fundamentos de Programação

1 Escrita de Arquivos Binário

INF 1620 P3-29/06/04 Questão 1 Nome:

Programação de Computadores I. Linguagem C Arquivos

INF 1620 P3-21/06/08 Questão 1 Nome:

Introdução à Programação

INF 1620 P3-25/11/05 Questão 1 Nome:

Uma observação importante é que uma função que não retorne qualquer tipo, isto é que retorne void, denomina-se de procedimento.

Linguagem C: Introdução

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Banco de Dados. Aula 1 - Introdução e Conceitos Básicos

Entrad Entrada / Saíd a / Saída

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

4,0 pontos), exclusão de registro e exclusão completa de dados; 3. A nota final do trabalho terá um peso 4.

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Memória Secundária x Principal. Informação mantida em memória secundária (externa)

INF 1620 P1-11/04/08 Questão 1 Nome:

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Linguagem C. Ponteiros. Alex Vidigal Bastos.

1 O filtro da mediana

INF 1620 P1-14/04/07 Questão 1 Nome:

Programação. Folha Prática 10. Lab. 10. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

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

Ficheiros. IPC2 1999/2000 F. Nunes Ferreira

ARQUIVOS DE DADOS EM C: UMA INTRODUÇÃO

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Aluno: Matrícula: Turma:

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

INF 1620 P1-04/10/03 Questão 1 Nome:

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Algoritmos e Estruturas de Dados I Linguagem C

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

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

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Transcrição:

Arquivos Programação de Computadores I Natália Batista nataliabatista@decom.cefetmg.br

1. Arquivos Estruturas de dados armazenadas fora da memória principal do computador, por exemplo em discos. Usados quando: informações são muito numerosas para caber na memória principal. necessidade de armazenamento permanente de informações. 2

1. Arquivos Qualquer dado não volátil tem que ser guardado em arquivos: textos, programas: fonte e binário, valores de entrada, valores calculados, bancos de dados, imagens, filmes, etc. 3

2. Tipos de arquivos Arquivos binários: Usam o sistema binário de numeração para armazenar informações numéricas ou literais. Arquivos texto: Armazenam informações numéricas e literais através de códigos de seus caracteres. São agrupados em linhas, que por sua vez são agrupadas em páginas. 4

3. Manipulação de arquivos 1.Declarar o ponteiro. 2.Abrir. 3.Ler / Escrever. 4.Fechar. 5

4. Arquivos: abertura... Todo arquivo tem dois nomes: interno: declarado dentro do programa. externo: usado pelo sistema operacional. Associação dos nomes é feita por meio do ponteiro de arquivo. Exemplo: FILE *fp; // Declaração da estrutura fp = fopen("exemplo.bin","wb"); /* o arquivo se chama exemplo.bin e está localizado no diretório corrente */ if (!fp)... printf ("Erro na abertura do arquivo."); //no caso de um erro fopen() retorna um ponteiro (NULL) 6

4. Arquivos: abertura Protótipo: FILE *fopen (char *nome_do_arquivo,char *modo); 7

5. Arquivos: fechamento int fclose(file *fp); No final da utilização, grava os dados no arquivo. Faz com que qualquer caracter que tenha permanecido no "buffer" associado ao fluxo de saída seja gravado. 8

6. Arquivo texto O programa a seguir lê uma string do teclado e escreve-a, caractere por caractere em um arquivo em disco (o arquivo arquivo.txt, que será aberto no diretório corrente). #include <stdio.h> #include <string.h> int main() { FILE *fp; char string[100]; int i; fp = fopen("arquivo.txt","w"); // Arquivo ASCII, para escrita if(!fp) { printf("erro na abertura do arquivo.\n"); ; printf("digite a string a ser gravada no arquivo:"); gets(string); // Grava a string, caractere a caractere for(i=0; i<strlen(string); i++) fputc(string[i], fp); fclose(fp); 9

6. Arquivo texto #include <stdio.h> O programa a seguir abre um arquivo já existente e o lê, caracter por caracter, até que o final do arquivo seja atingido. Os caracteres lidos são apresentados na tela. int main() { FILE *fp; char c; fp = fopen("arquivo.txt","r"); // Abre arquivo texto para leitura if(!fp) { printf("erro na abertura do arquivo.\n"); c = fgetc(fp); while(!feof(fp)){ printf("%c", c); c = fgetc(fp); fclose(fp); // Enquanto não chegar ao final do arquivo // Imprime o caracter lido 10

7. Arquivo texto: funções int fputc (int ch,file *fp); Escreve um caractere no arquivo. int fgetc (FILE *fp); Retorna um caractere lido do arquivo. char *fgets (char *str, int tamanho,file *fp); Lê uma string num arquivo. A função lê a string até que um caracter de nova linha seja lido ou tamanho-1 caracteres tenham sido lidos. A string resultante sempre terminará com '\0' (por isto tamanho-1 caracteres serão lidos). char *fputs (char *str,file *fp); Escreve uma string num arquivo. int feof (FILE *fp); Retorna não-zero se o arquivo chegou ao EOF, caso contrário retorna zero. 11

7. Arquivo texto: funções int fprintf(file *fp,char *str,...); Funciona como a função printf(), mas a saída é um arquivo. int fscanf(file *fp,char *str,...); Funciona como a função scanf(), porém lê de um arquivo. 12

#include <stdio.h> int main() { FILE *p; char str[30], resposta[80]; char frase[] = "Este e um arquivo chamado: "; int i; //Le um nome para o arquivo a ser aberto: printf("entre com um nome para o arquivo: "); gets(str); if (!(p = fopen(str,"w"))){ //Caso ocorra algum erro na abertura do arquivo printf("erro! Impossivel abrir o arquivo!\n"); //Se nao houve erro, imprime no arquivo fputs(frase, p); fputs(str,p); Programa que escreve duas strings em um arquivo para formar uma frase. fclose(p); 13

#include <stdio.h> int main() { FILE *p; char str[80],c; Programa que escreve uma strings em um arquivo usando a função fprintf. // Le um nome para o arquivo a ser aberto: printf("entre com um nome para o arquivo:\n"); gets(str); if (!(p = fopen(str,"w"))) { printf("erro! Impossivel abrir o arquivo!\n"); // Se nao houve erro, imprime no arquivo e fecha fprintf(p,"este e um arquivo chamado: %s\n", str); fclose(p); 14

#include <stdio.h> int main() { FILE *p; char str[80], c; Programa que lê uma string de um arquivo e imprime na tela, caracter por caracter com a função fscanf. // Le um nome para o arquivo a ser aberto: printf("entre com um nome para o arquivo: "); gets(str); // Abre para a leitura if (!(p = fopen(str,"r"))) { printf("erro! Impossivel abrir o arquivo!\n"); return(0); // Imprime conteudo do arquivo while (!feof(p)) { fscanf(p,"%c",&c); printf("%c",c); fclose(p); 15

8. Arquivo binário unsigned fread(void *buffer, int numero_de_bytes, int count, FILE *fp); O buffer é a região de memória na qual serão armazenados os dados lidos. O número de bytes é o tamanho da unidade a ser lida. count indica quantas unidades devem ser lidas. A função retorna o número de unidades efetivamente lidas. unsigned fwrite(void *buffer,int numero_de_bytes,int count,file *fp); Escrita no arquivo. A função retorna o número de itens escritos. Este valor será igual a count a menos que ocorra algum erro. 16

#include <stdio.h> typedef struct CONTA { char nome[81]; float saldo; Conta; Programa que escreve um registro (cujos dados foram lidos do teclado) em um arquivo binário. int main() { FILE *arq; Conta cliente; //Le os dados da conta do cliente do teclado printf("digite o nome do cliente: "); gets(cliente.nome); printf("digite o saldo: "); scanf("%f", &cliente.saldo); arq = fopen("banco.dat", "wb"); //Caso ocorra algum erro na abertura do arquivo if (arq == NULL){ printf("erro! Impossivel abrir o arquivo!\n"); //Se nao houve erro, grava registro no arquivo fwrite(&cliente, sizeof(conta), 1, arq); fclose(arq); 17

#include <stdio.h> typedef struct CONTA { char nome[81]; float saldo; Conta; Programa que lê um registro de um arquivo binário e escreve os dados na tela. int main() { FILE *arq; Conta cliente; arq = fopen("banco.dat", "rb"); //Caso ocorra algum erro na abertura do arquivo if ( arq == NULL){ printf("erro! Impossivel abrir o arquivo!\n"); //Le os dados do arquivo fread (&cliente, sizeof(conta), 1, arq); printf("nome do cliente: %s\n", cliente.nome); printf("saldo: %f\n", cliente.saldo); fclose(arq); 18

9. Arquivo binário: exemplo com vetor struct Conta {... char nome[81]; float saldo; Conta clientes[100]; fwrite (clientes, sizeof (Conta), 100, ponteiro_arq); O primeiro parâmetro é o ponteiro do vetor cujos elementos queremos gravar no arquivo (no caso, o vetor clientes). O segundo, é o tamanho de cada registro. O terceiro, é a quantidade de registros que queremos escrever. O quarto é o ponteiro para o arquivo já aberto com fopen. 19

9. Arquivo binário: exemplo com vetor struct Conta {... char nome[81]; float saldo; Conta clientes[100]; fread (clientes, sizeof (Conta), 100, ponteiro_arq); O primeiro parâmetro é o ponteiro para onde queremos mandar o que for lido (no caso, o vetor clientes). O segundo, é o tamanho de cada registro. O terceiro, é a quantidade de registros que queremos ler. O quarto é o ponteiro para o arquivo já aberto com fopen. 20

#include <stdio.h> #define TAM 10 typedef struct CONTA { char nome[81]; float saldo; Conta; int main() { FILE *arq; Conta clientes[tam]; Programa que escreve todos os elementos de um vetor de registros em um arquivo binário. //Le os dados das contas dos clientes do teclado for (int i=0; i<tam; i++){ printf("digite o nome do cliente: "); gets(clientes[i].nome); printf("digite o saldo: "); scanf("%f%*c", &clientes[i].saldo); arq = fopen("banco.dat", "wb"); //Caso ocorra algum erro na abertura do arquivo if ( arq == NULL){ printf("erro! Impossivel abrir o arquivo!\n"); //Se nao houve erro, grava registro no arquivo fwrite(clientes, sizeof(conta), TAM, arq); fclose(arq); 21

#include <stdio.h> #define TAM 10 typedef struct CONTA { char nome[81]; float saldo; Conta; int main() { FILE *arq; Conta clientes[tam]; Programa que lê os registros de um arquivo e os armazena em um vetor de registros no programa. arq = fopen("banco.dat", "rb"); //Caso ocorra algum erro na abertura do arquivo if ( arq == NULL){ printf("erro! Impossivel abrir o arquivo!\n"); //Se nao houve erro, le registros do arquivo fread(clientes, sizeof(conta), TAM, arq); //Imprime na tela os dados das contas dos clientes for (int i=0; i<tam; i++){ printf("nome do cliente: %s ", clientes[i].nome); printf("saldo: %f\n", clientes[i].saldo); fclose(arq); 22

10. Arquivo binário: acesso Acesso sequencial: dados são lidos ou escritos seguidamente. Organização do arquivo texto é sempre sequencial. Acesso direto: int fseek (FILE *fp,long numbytes,int origem); Move a posição corrente de leitura ou escrita no arquivo de um valor especificado, a partir de um ponto especificado. Origem: 23