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

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

Fundamentos de Programação 1

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

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

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

Programação de Computadores II

Aula 16: Manipulação de Arquivos em C

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

TÉCNICAS DE PROGRAMAÇÃO

Métodos Computacionais. Arquivos

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

Laboratório de Introdução à Ciência da Computação I

Arquivos em C Parte 2

3.1 - Funções para manipular dados de entrada e saída padrão

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

Linguagem C Ficheiros Compilação Separada

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

Programação Estruturada Prof. Rodrigo Hausen Entrada e Saída Parte 2

Entrad Entrada / Saíd a / Saída

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

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

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

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

Linguagem de Programação

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 C: ARQUIVOS

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

Operações em Arquivos. MC102 Felipe Bergo

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

Fundamentos de Programação

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

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

13a. Aula Manipulação de arquivos

Linguagem C. André Tavares da Silva.

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

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

Linguagem de Programação C

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

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

Outline. 33. Manipulação de arquivos DIM

Algoritmos e Estruturas de Dados II IEC013

Aula 26: Arquivos de texto

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

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

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

INF 1620 P1-16/09/06 Questão 1 Nome:

Manipulação de Arquivos

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

LINGUAGEM C: ARQUIVOS

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

INF 1620 P2-14/10/05 Questão 1 Nome:

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

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

Programação de Computadores

Elementos de programação em C

Linguagem C: Arquivo-Texto

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

Manipulação de Arquivos

Programação II. Arquivos - Conceito. Arquivos

Manipulação de Arquivos

prim = A ; prim = &A[0];

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

Sumário. Ficheiros. Ficheiros

Manipulação de Ficheiros

Aula 30: Revisão para Prova 03

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

1/22 FICHEIROS BINÁRIOS

INF 1620 P4 30/06/07 Questão 1 Nome:

INF 1620 P1-18/09/04 Questão 1 Nome:

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

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

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

Funções de Entrada e Saída

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

LINGUAGEM C: ARRAYS DE CARACTERES: STRINGS

1/24 FICHEIROS DE TEXTO

SCC-211 Lab. Algoritmos Avançados

INF 1620 P4 11/12/06 Questão 1 Nome:

Programação de Computadores II

INF 1620 P1-17/09/05 Questão 1 Nome:

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

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

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 12 Ficheiros (Files) e I/O. Ficheiros

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 10 Ficheiros (Files) e I/O

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

Aula 16. Ficheiros de texto

Mestrado em Engenharia Física Tecnológica

Elementos de programação em C

Introdução à programação Computadores e programação I 2003

Arquivos em C. Material da Prof. Ana Eliza

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

ECT1203 Linguagem de Programação

Linguagem de Programação C

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

Transcrição:

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

Leitura de Arquivos Na linguagem C temos um tipo especial chamado FILE para trabalhar com arquivos.

Abrindo e fechando um arquivo Para abrir um arquivo utilizamos: FILE *fopen( const char * filename, const char * mode ); Retorna NULL em caso de erro.

Abrindo e fechando um arquivo mode representa o modo de abertura do arquivo: r - somente leitura w - somente escrita, criando um arquivo novo e zerando os existentes a - somente escrita, iniciando a partir do final do arquivo

Abrindo e fechando um arquivo mode também permite modificadores: + - abre para leitura E escrita b - indica que a leitura/escrita é em arquivos binários

Abrindo e fechando um arquivo fopen( arquivo, r+ ); Abre o arquivo para leitura e escrita, apontando para o início dele.

Abrindo e fechando um arquivo fopen( arquivo, w+ ); Abre o arquivo para leitura e escrita, zerando o arquivo caso ele já exista.

Abrindo e fechando um arquivo fopen( arquivo, a+ ); Abre o arquivo para leitura e escrita, iniciando do final do arquivo.

Abrindo e fechando um arquivo fopen( arquivo, rb ); Abre o arquivo para leitura no modo binário.

Abrindo e fechando um arquivo fopen( arquivo, wb ); Abre o arquivo para escrita no modo binário.

Abrindo e fechando um arquivo Após usar um arquivo, devemos fechá-lo com o comando: int fclose( FILE *fp ) retorna 0 em caso de sucesso e EOF em caso de erro.

Leitura de Arquivos Texto A leitura do arquivo pode ser feita com as funções: int fgetc( FILE * fp ); char *fgets( char *buf, int n, FILE *fp );

Escrita de Arquivos Texto A leitura do arquivo pode ser feita com as funções: int fputc( int c, FILE * fp ); Int fputs( char *buf, FILE *fp );

Caminhar dentro do arquivo Para andar dentro do arquivo utilizamos a função: int fseek(file *stream, long int offset, int whence) offset é quantas posições a frente queremos andar whence é SEEK_SET, SEEK_CUR, SEEK_END, para começo, posição atual e final de arquivo, respectivamente

Leitura e Escrita em arquivos binários size_t fread(void *ptr, size_t size, size_t number, FILE *f); size_t fwrite(const void *ptr, size_t size, size_t number, FILE *f);

Passagem de parâmetro do programa A função main pode receber dois parâmetros: int argc e char ** argv argc indica o número de argumentos passados para o programa, no mínimo 1 argv é a lista de argumentos, em formato string, passadas ao programa

Passagem de parâmetro do programa Nota: argv[0] é SEMPRE o nome do programa!

getchar e putchar int getchar (void); retorna um char (como um inteiro) capturado do teclado int putchar (int); imprime um char na tela e retorna o mesmo char 18

getchar e putchar char c; do { c = getchar(); putchar(c); } while (c!= \n ); 19

gets e puts char * gets (char *); captura uma string até que aperte enter. int puts(char *); imprime uma string adicionando \n no final. 20

gets e puts char * gets (char *); captura uma string até que aperte enter. int puts(char *); imprime uma string adicionando \n no final. 21

gets e puts char s[maxlen]; puts("entre com um texto: "); gets(s); puts("você digitou: "); puts(s); 22

gets: perigo!! Defina MAXLEN como 5 e digite um texto maior que 5. Segmentation fault! A função gets não limita a quantidade de dados de entrada. Isso gera possibilidade de ataques do tipo buffer overflow. 23

fgets e fputs int fputs(const char *str, FILE *stream) char *fgets(char *str, int n, FILE *stream) Lê e escreve na entrada/saída de dados definido em stream e limita a quantidade de dados lido pelo parâmetro n 24

fgets e fputs char s[maxlen]; fputs("entre com um texto: ", stdout); fgets(s, MAXLEN, stdin); fputs("você digitou: ", stdout); fputs(s, stdout); putchar('\n'); 25

scanf e printf int scanf(const char *format,...) captura uma entrada formatada e armazena nas respectivas variáveis int printf(const char *format,...) imprime uma saída formatada 26

scanf e printf A string format é a formatação dos dados e pode conter: %d, %u - número inteiro com ou sem sinal, respectivamente %c - caractere %f, %lf - float e double %s - string %o, %x - octal e hexadecimal 27

scanf e printf Também pode conter os caracteres especiais: \n - próxima linha \t - tabulação \a - aviso sonoro 28

Problemas com scanf O scanf espera receber exatamente aquilo que foi especificado. Você não tem garantia que o usuário irá obedecer adequadamente! Ao falhar, o scanf pode preencher o buffer com outras informações comprometendo toda a entrada de dados subsequente. 29

Problemas com scanf Para entradas do usuário é mais seguro utilizar a função fgets seguida de atoi, strtol ou strtok conforme necessário. 30

atoi(), strtol(), strtok() int atoi(const char *str) - converte uma string em número inteiro ou zero quando não for possível converter long int strtol(const char *str, char **endptr, int base) - converte a parte inicial da string que contenha um inteiro em um int na base base. endptr aponta para o primeiro caractere não numérico da string. 31

atoi(), strtol(), strtok() char *strtok(char *str, const char *delim) - quebra a string em substrings separadas por delim. Se o primeiro parâmetro for NULL ele retorna o ponteiro para a próxima substring. 32

atoi(), strtol(), strtok() Para float e double temos também: atof e strtod Nota: ato* e strtok se encontram na biblioteca <string.h> strto* se encontram na biblioteca <stdlib.h> 33

Exemplo 1 int main (int argc, char **argv ) { if (argc < 2) { printf("uso: %s <nome do arquivo>\n", argv[0]); return -1; } cat(argv[1]); return 0; }

Exemplo 1 #define MAXLEN 5000 void cat (char *name) { FILE * fp; char buf[maxlen]; fp = fopen(name, "r"); } while ( fgets(buf,maxlen,fp) ) { } fputs(buf, stdout);

Exemplo 2 #include <stdio.h> #include <string.h> int main ( ) { FILE * fp; char string[100] = "Ola Mundo!"; fp = fopen("arquivo.bin", "wb"); fwrite(string, sizeof(char), strlen(string), fp); } return 0;