Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.

Slides:



Advertisements
Apresentações semelhantes
TRATAMENTO DE ARQUIVOS EM C
Advertisements

Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Prof. Luis Otavio Alvares
Modificadores de tipos e Arquivos
Prof. Flavio Marcello Strelow
Arquivos Prof: Erivelto Tschoeke, Msc. –
Prof: Erivelto Tschoeke, Msc. –
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Linguagem de Programação 1
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
LINGUAGEM ESTRUTURADA TURBO C
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Programação Orientada a Objetos I Material IV-Bimestre Criando um.
Algoritmos e Estruturas de Dados II
Linguagem C Strings.
Armazenamento de Dados em Arquivos
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Armazenamento de Dados em Arquivos
Fundamentos de Programação 1
Ling. e Técnicas de Programação I 3º semestre Plano de Ensino 2011
Tratamento de Ficheiros
Revisão da Linguagem C.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
Instruções condicionais
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
Manipulação de Arquivos em C
Arquivos Continuação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
DAVID ANDERSON CARDOSO DANTAS
Aula Prática 12 Operações com Arquivos Monitoria
Curso de C/C++ Aula 4 Instrutor: Luiz Felipe Sotero
Computação Eletrônica
C APÍTULO II Armazenando e recuperando dados. A RMAZENANDO E RECUPERANDO DADOS Agenda Salvar dados Abrir um arquivo Criar e gravar Fechar Ler Bloquear.
Aula 13 - Armazenamento de Dados em Arquivos
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
ARQUIVOS.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Tratamento de ficheiros Abrir e fechar um ficheiro.
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
Aula Prática 11 Operações com Arquivos Monitoria
Algoritmos e Estruturas de Dados
Operações com Arquivos Monitoria A estrutura FILE  É como um tipo de dado, mas não é um tipo propriamente dito  Definido no arquivo cabeçalho.
Aula Prática 11 Operações com Arquivos Monitoria
Revisão Luis Antonio Tavares
Manipulando arquivos texto com C
Programação de Computadores I – Arquivos
Rotinas do BIOS e DOS Serviços de vídeo (INT 10H)
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Salvando em Arquivos. Arquivos Um arquivo pode estar associado a qualquer dispositivo de entrada e saída, como por exemplo: teclado, video, impressora,
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
1 Programação em C Aula Considere que um banco armazena em arquivo as seguintes informações de seus clientes: número da conta (int), nome do cliente.
Felipe Nunes Flores – Programa de Educação Tutorial.
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Aula de Entrada / Saída Monitores: Alessandro Luna Leonardo Ribeiro Mardoqueu Vieira Mozart Araújo Filho.
Linguagem de Programação
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”.
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
Jean Carlo Mendes ** Slides baseados no material do prof. Dr Guilherme Tavares de Assis (UFOP)
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I
DHD – Desenvolvimento em Hardware
Transcrição da apresentação:

Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação

Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01

Arquivos

Tipos de arquivo: Sequencial (texto) Caracteres armazenadas sequencialmente. É possível determinar o primeiro, segundo terceiro.. caracteres que compõem o arquivo Binário Formado por uma sequência de bytes sem correspondência com um tipo de dado. Cabe ao programador fazer esta correspondência quando lê e escreve estes arquivos.

Como trabalhar com arquivos Antes de acessar os dados dentro de um arquivo é necessário abri-lo. Executa-se as operações desejadas com o arquivos usando funções específicas para leitura e escrita Ao terminar de realizar as operações no arquivo, devemos fechá-lo. As operações de abertura e fechamento garantem a integridade dos dados. As funções referentes a arquivos requerem a inclusão do stdio.h, e todo arquivo aberto é referenciado por um ponteiro para o tipo FILE.

Descritor de Arquivos Descritor de arquivo: Em C: Estrutura de dados denominada FILE Aponta para um arquivo físico no disco O arquivo lógico e armazenado em variáveis de memória definidas pelo programador. Todas operações feitas pelo descritor refletem no arquivo Criando um descritor: FILE *parquivo; Arquivo “lógico” em memória Descritor de Arquivo (FILE) Arquivo “Físico” Disco Memória

Abrindo arquivos A função “fopen” tem duas finalidades: - abrir uma descritor de bytes - ligar um arquivo em disco àquele descritor FILE *fopen(char *NomeArquivo, char *modo); FILE *arquivo; if ((arquivo = 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 */ }

Abrindo arquivos Outro exemplo FILE *parquivo; char *nome = "texto.txt"; if (( parquivo = fopen(nome, "w+b")) == NULL) { printf("\n\nNao foi possivel abrir o arquivo para escrita.\n"); exit(1); }

Modo Significado “r” Abre Arquivo de Texto para Leitura “w” Cria Arquivo de Texto para Gravação “a” Anexa a um Arquivo de Texto “rb” Abre Arquivo Binário para Leitura “wb” Cria Arquivo Binário para Gravação “ab” Anexa a um Arquivo Binário “r+” Abre Arquivo de Texto para Leitura/Gravação “w+” Cria Arquivo de Texto para Leitura/Gravação “a+” 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

Fechando arquivo Fechando um arquivo: função fclose(..) Quando um programa não precisa mais utilizar um arquivo por um período de tempo longo, o arquivo pode ser fechado Fechar um arquivo protege os seus dados, garante que atualizações feitas serão salvas e libera o arquivo para outros usuários ou programas poderem utiliza-lo. int fclose(FILE *fp); fclose(arquivo);

C provê funções para ler caracteres, linhas de texto, padrões formatados ou vetores de bytes: int getc(FILE *arquivo); lê um caracter do arquivo e retorna seu valor como inteiro. Retorna EOF em caso de erro int fgetc(FILE *f) lê um byte, retorna seu valor (0-255) como inteiro. Retorna EOF em caso de erro. char *fgets(char *dest, int limite, FILE *f); lê uma linha de texto (ou até atingir o limite de bytes lidos) e guarda o texto lido em dest. Retorna dest em caso de sucesso, NULL em caso de erro. int fscanf(FILE *f, char *formato,...); scanf para arquivos. int fread(void *dados, int tam_elem, int num_elem, FILE *f); lê num_elem elementos de tam_elem bytes cada e armazena em dados. Retorna o número de elementos lidos com sucesso. Leitura de dados

#include int main() { FILE * fp; char ch; fp = fopen ("arquivo.txt", "r"); if (fp == NULL) perror ("Erro abrindo arquivo"); else { ch = getc(fp); while (ch != EOF){ ch = getc(fp); putchar (ch); } fclose (fp); } return 0; } Exemplo de código para ler e imprimir usando getc

#include int main() { FILE * pFile; char mystring [100]; pFile = fopen (“arquivo.txt", "r"); if (pFile == NULL) perror ("Erro abrindo arquivo"); else { fgets (mystring, 100, pFile); puts (mystring); fclose (pFile); } return 0; } Exemplo de código para ler e imprimir usando fgets

C provê funções para escrever caracteres, strings, padrões formatados ou vetores de bytes: int putc(int c, FILE *f) Escreve o caracter c. Retorna EOF em caso de erro. int fputc(int c, FILE *f) Escreve o byte c. Retorna EOF em caso de erro. int fputs(char *dest, FILE *f); Escreve a string dest (que deve ter o zero terminador) no arquivo. Retorna EOF em caso de erro. int fprintf(FILE *f, char *formato,...); printf para arquivos. int fwrite(void *dados, int tam_elem, int num_elem, FILE *f); Escreve num_elem elementos de tam_elem bytes cada, armazenados em dados. Retorna o número de elementos escritos com sucesso. Escrita de dados

main(){ FILE *arq; char ch; if ((arq=fopen(“teste.dat”,”w”)) == NULL) { printf(“Arquivo não pode sercriado\n”); exit(1); } do{ ch=getchar(); putc(ch,arq); }while (ch!=0); fclose(arq); } Escreve cada caracter lido em um arquivo usando putc

#include int main () { FILE * pFile; char str [256]; printf (“Informe string a gravar em arquivo: "); fgets (str,255,stdin); pFile = fopen (“arquivo.txt","a"); fputs (str, pFile); fclose (pFile); return 0; } Escreve uma string lida em um arquivo usando fputs

fwrite ( ) e fread ( ) Permitem escrever e ler blocos de dados, sua forma geral é a seguinte: int fread(void *buffer, int num_bytes, int cont, FILE *fp); int fwrite(void *buffer, int num_bytes, int cont, FILE *fp);

#include int main() { FILE *pf; float pi = ; float pilido; if((pf = fopen("arquivo.bin", "wb")) == NULL) { printf("Erro na abertura do arquivo"); exit(1); } if(fwrite(&pi, sizeof(float), 1,pf) != 1) /* Escreve a variável pi */ printf("Erro na escrita do arquivo"); fclose(pf); /* Fecha o arquivo */ if((pf = fopen("arquivo.bin", "rb")) == NULL){ /* Abre o arquivo para nova leitura */ printf("Erro na abertura do arquivo"); exit(1); } if(fread(&pilido, sizeof(float), 1,pf) != 1) /* Le em pilido o valor da variável armazenada anteriormente */ printf("Erro na leitura do arquivo"); printf("\nO valor de PI, lido do arquivo e': %f", pilido); fclose(pf); return(0); } Exemplo usando fwrite e fread

Erros com arquivos A função ferror() determina se a operação de arquivo produziu um erro. Sua forma geral será: int ferror(FILE *fp); #include int main () { FILE * pFile; pFile=fopen(“arquivo.txt","r"); if (pFile==NULL) perror ("Erro ao abrir arquivo"); else { fputc ('x',pFile); if (ferror (pFile)) printf ("Erro na escrita ao arquivo\n"); fclose (pFile); } return 0; }

Em todo arquivo aberto há um "cursor" indicando a posição onde ocorrerá a próxima leitura e/ou escrita. Todas as operações de leitura e escrita avançam o cursor após ler/escrever os dados. Para mover o cursor, ou obter sua posição atual, temos: int fseek(FILE *f, long distancia, int origem); Move o cursor do arquivo f para a posição distancia relativa em bytes a alguma origem. A origem deve ser uma destas 3 constantes: SEEK_SET – início do arquivo SEEK_CUR – posição atual SEEK_END – fim do arquivo fseek retorna 0 em caso de sucesso, -1 em caso de erro. Obs: Normalmente é utilizado em arquivos binários long rewind(FILE *f); Move o cursor para o inicio do arquivo. long ftell(FILE *f); Retorna a posição atual do cursor no arquivo f. Posicionamento do cursor

main(){ FILE *fp; char c; if ((fp=fopen( “ teste ”, ” rb ” )) == NULL) { printf( “ Arquivo não pode ser aberto\n ” ); exit(1); } fseek(fp,234L,0); /* L for ç a que seja um inteiro longo */ c = getc(fp); /* lê o caracter 234 */ putchar(c); } Lê um caracter do arquivo binário

Obter o tamanho de um arquivo int main () { FILE * pFile; long lSize; pFile = fopen ( "myfile.bin", "rb" ); if (pFile==NULL) { fputs ("File error",stderr); exit (1); } fseek (pFile, 0, SEEK_END); /* vai para fim do arquivo */ lSize = ftell (pFile); /* retorna posicao atual */ rewind (pFile); /* volta para inicio */ printf(“Tamanho do arquivo em bytes%lf”, lSize); }

#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); } Programa para copiar arquivos