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

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

13a. Aula Manipulação de arquivos

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

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

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

Programação de Computadores II

Arquivos em C. Material da Prof. Ana Eliza

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

Métodos Computacionais. Arquivos

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

Fundamentos de Programação 1

Programação II. Arquivos - Conceito. Arquivos

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

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

LINGUAGEM C: ARQUIVOS

Linguagem C: Arquivo-Texto

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

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

Aula 16: Manipulação de Arquivos em C

LINGUAGEM C: ARQUIVOS

TÉCNICAS DE PROGRAMAÇÃO

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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:

Linguagem de Programação

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

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)

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

Outline. 33. Manipulação de arquivos DIM

Algoritmos e Estruturas de Dados II IEC013

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

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

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

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

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

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

Manipulação de Arquivos

Manipulação de Arquivos

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

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

ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

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

Operações em Arquivos. MC102 Felipe Bergo

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

Programação Estruturada

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

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

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.

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

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

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

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

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

Manipulação de arquivos

Manipulação de Arquivos

Linguagem C Ficheiros Compilação Separada

Manipulação de Arquivos

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 ]

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

1/22 FICHEIROS BINÁRIOS

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

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

1/24 FICHEIROS DE TEXTO

Programação de Computadores

Capítulo 06: Arquivos

Aula 16. Ficheiros de texto

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

Aula 26: Arquivos de texto

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

Manipulação de Arquivos em C

1 Escrita de Arquivos Binário

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

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

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

Faculdade de Computação

Entrad Entrada / Saíd a / Saída

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

Fundamentos de Programação

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

Introdução à Programação

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

Referências. Arquivos. Tópicos Principais. Programação de Computadores II. Motivação. Motivação. Abertura de arquivo. Slides da profa.

Computação 2. Aula 7. Profª. Fabiany Ponteiros

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

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

Arquivos. Estruturas de Dados II Vanessa Braganholo

Sumário. Ficheiros. Ficheiros

Elementos de programação em C

Arquivos Binários UFOP 1/25

O que é a modularização

Programação de Computadores I. Linguagem C Arquivos

Linguagem de Programação C. Arquivos

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

Transcriçã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 (tipo_var), 1, arquivo); rewind (arquivo); fread (&variavel, sizeof ( tipo_var), 1, arquivo); fclose (arquivo); feof(arquivo);

Arquivos (Revisão) Comandos para abertura de arquivos: Definição de variáveis tipo Arquivo : FILE *arquivo; Abertura (e fechamento) de arquivos: arquivo = fopen( nome, modo ); Onde: if(arquivo!=0) fclose(arquivo); nome = nome do arquivo modo = tipo do arquivo (ascii ou binário), e objetivo de uso (leitura, escrita, anexação) Obs: o comando fopen retorna um número inteiro: um número maior que zero significa que a abertura foi feita corretamente, 0(zero) indica erro de abertura do arquivo; Nunca tente fechar um arquivo que não foi aberto!!!

Modos de Arquivos (Revisão)

Arquivos Binários - Continuação Os arquivos binários podem armazenar mais dados do que cabe na memória volátil de um computador; Para realizar a leitura/escrita de um registro específico, deve-se posicionar o ponteiro para arquivo de forma adequada; Comando para posicionamento do ponteiro de leitura/escrita em arquivos binários: fseek(file *ponteiro_do_arquivo, long int posição_em_bytes, int modo_movimentação)

Arquivos Binários - Continuação A sintaxe do comando fseek é: fseek(ponteiro_do_arquivo, posicao_em_bytes, modo_movimentacao); O ponteiro_do_arquivo é aquele de quando abrimos o arquivo (Variável FILE *). A posição, em bytes, para onde moveremos o ponteiro interno do arquivo é um valor long int, então ao declarar alguma variável para isso devemos usar o tipo long, e ao usar números diretamente é recomendável usar o molde (long), para caso do valor passar o tamanho máximo suportado para uma variável int.

Arquivos Binários - Continuação O modo de movimentação controla como queremos mover o ponteiro. São três modos: SEEK_SET (constante de valor 0) - movimenta para a posição indicada (começando a contar do zero, que representa o primeiro byte do arquivo). SEEK_END (constante de valor 1)- movimenta para a posição indicada, começando a contar do final do arquivo. Neste caso, o zero representa a posição imediatamente posterior ao último byte do arquivo. SEEK_CUR (constante de valor 2)- movimenta a partir da posição atual. Neste caso podemos colocar números negativos, que significa que queremos retroceder com o ponteiro do arquivo. Lembrem-se que qualquer operação de leitura ou gravação em um arquivo move o ponteiro interno deste arquivo, o mesmo números de bytes da leitura (ou gravação). Quando abrimos um arquivo no modo append (a), o ponteiro começa na posição zero, em relação ao final do arquivo. Seria como fazer fseek usando o SEEK_END.

Exemplos: int result; FILE *fp; Arquivos Binários - Continuação fp = fopen( arquivo.bin, r+b ); if(fp!=0) { printf( Erro na abertura do arquivo\n ); exit(fp);} result = fseek(fp,0,seek_set); //equivale ao rewind(fp); if(result!=0) printf( Erro no posicionamento!\n );

Arquivos Binários - Continuação Lendo a posição do ponteiro de leitura/gravação do arquivo : O comando ftell informa a posição atual do ponteiro interno do arquivo. Exemplo: long posicao; posicao=ftell(ponteiro_arq)/sizeof(struct cliente); printf ("O ponteiro interno do arquivo esta' apontando para o %ldº registro.\n", posicao + 1); Este comando pode ser útil também para ver qual é o tamanho de um arquivo. Para isso, posicione o ponteiro do arquivo no final do arquivo (usando SEEK_END), e depois leia a posição. O número retornado é o tamanho do arquivo, em bytes.

Comandos para gravação e leitura de arquivos: fgetc(); fputc(); fscanf(); fprintf();

Comandos para gravação e leitura de arquivos texto: fgetc(file *fp); fputc(char C, FILE *fp); char *fgets(file *fp,char *var); char *fputs(file *fp,char *var); fscanf(file *fp, string_formato,vars); fprintf(file *fp, string_formato,vars);

#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char ch; char* nome; printf ( "Informe o nome do arquivo a ser lido: \n ); gets ( nome ); fp = fopen ( nome, "r" ); if ( NULL == fp) { printf ( "O arquivo não pode ser aberto. \n" ); system ( "Pause" ); exit (1); }

ch = fgetc ( fp ); while ( ch!= EOF ) { } putchar( ch ); /* Imprime na tela */ ch = fgetc ( fp ); printf ("\n"); system ("Pause"); return 0; }

//fputc(char C, FILE *fp); #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char ch; fp = fopen ( teste.txt", "w" ); if ( fp == NULL ) { printf ( "O arquivo não pode ser aberto. \n" ); system ( "Pause" ); exit (1); }

printf ( "Programa para gravar caracteres em um arquivo chamado teste.txt." ); printf ( "\n \n" ); printf ( "Digite os caracteres: \n" ); do { ch = getchar(); fputc ( ch, fp ); } while ( ch!= '\n' ); fclose ( fp ); system ( "Pause" ); return 0; }

Leitura com fgets() A função fgets() lê uma linha inteira de uma vez. Exemplo: result = fgets(linha, 100, arq); // o 'fgets' lê até 99 caracteres ou até o '\n Se a função for executada com sucesso, fgets retorna o endereço da string lida, caso contrário retorna NULL.

#include <stdio.h> void main(){ FILE *arq; char Linha[100]; char *result; int i; arq = fopen("arqteste.txt", "rt"); if (arq == NULL) // Se houve erro na abertura {printf("problemas na abertura do arquivo\n"); return;}

i = 1; Arquivos Texto while (!feof(arq)) { result = fgets(linha, 100, arq); // o 'fgets' lê até 99 caracteres ou até o '\n' if (result) // Se foi possível ler printf("linha %d : %s",i,linha); i++; } fclose(arq); }

Leitura com fscanf A função fscanf() funciona como a função scanf(), porém, ao invés de ler os dados de teclado, estes dados são lidos de arquivo. Exemplo: int i, result; float x; result = fscanf(arq, "%d%f", &i, &x); Se result for igual à constante EOF, não há mais dados para serem lidos.

Gravação Para gravação de arquivos texto usa-se as funções fputs e fprintf Exemplo: result = fputs(str, arq); Se a função NÃO for executada com sucesso, fputs retorna a constante EOF.

char Str[100]; FILE *arq; arq = fopen("arqgrav.txt", "wt"); //Cria um arquivo texto para gravação if (arq == NULL) // Se não conseguiu criar {printf("problemas na CRIACAO do arquivo\n"); return;} strcpy(str,"linha de teste"); result = fputs(str, arq); if (result == EOF) printf("erro na Gravacao\n"); fclose(arq);

Exemplo de fprintf: result = fprintf(arq,"linha %d\n",i); Se a função fprintf for executada com sucesso, devolve o número de caracteres gravados. Se a função NÃO for executada com sucesso, retorna a constante EOF.

#include <stdio.h> void main() { FILE *arq; int i; int result; arq = fopen("arqgrav.txt", "wt"); if (arq == NULL) // Se nao conseguiu criar { printf("problemas na CRIACAO do arquivo\n"); return;} for (i = 0; i<10;i++) { // A funcao 'fprintf' devolve o número de bytes gravados // ou EOF se houve erro na gravação result = fprintf(arq,"linha %d\n",i); if (result == EOF) printf("erro na Gravacao\n"); } fclose(arq); }