Programação II. Arquivos - Conceito. Arquivos

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

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

Arquivos em C Parte 2

LINGUAGEM C: ARQUIVOS

Algoritmos e Estruturas de Dados II IEC013

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

Métodos Computacionais. Arquivos

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

Linguagem C: Arquivo-Texto

Capítulo 6: Arquivos

Outline. 33. Manipulação de arquivos DIM

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)

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

Capítulo 06: Arquivos

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

Manipulação de Arquivos

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

Linguagem C Ficheiros Compilação Separada

Manipulação de Arquivos

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P1 17/04/2010

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

1 Escrita de Arquivos Binário

Ficheiros. IPC2 1999/2000 F. Nunes Ferreira

1 O filtro da mediana

Programação Procedimental GBC /1 Prof. Renan Cattelan Prática 10. Estruturas e alocação dinâmica

Gilberto A. S. Segundo. 24 de agosto de 2011

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

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

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

Manipulação de arquivos

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Arquivos de Texto UFOP 1/31

Introdução à Programação em C (II)

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

Rogério Rodrigues de Vargas

P2 Programação II Departamento de Informática/PUC-Rio

INF 1007 Programação II

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 P3-25/11/05 Questão 1 Nome:

Métodos Computacionais. Strings (Vetor de Caracteres)

Aula 16. Ficheiros de texto

LISTA DE EXERCÍCIOS 2

Disciplina de Algoritmos e Programação

Alocação Dinâmica em C

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

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Exercícios: Arquivos

Curso de Introdução à Liguagem de. Grupo PET-Tele. Universidade Federal Fluminense. July 16, 2012

Apêndice B. Cadeias de Caracteres (Strings)

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

ponteiros INF Programação I Prof. Roberto Azevedo

1 Exercícios com ponteiros

1 Exercícios com ponteiros

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

Linguagem C: Introdução

INF P3-23/06/07 Questão 1 Nome:

Leitura Segura de Strings

Lista Encadeada (Linked List)

Funções em Linguagem C Parte II

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Programação: Vetores

Manipulação de Arquivos Binários

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

BCC202 - Estrutura de Dados I

Curso de C. Comunicação e Arquivos. 24/05/2010 Arnaldo V Moura, Daniel F. Ferber 1

Computação 2. Aula 5. Profª. Fabiany defines vetor, strings e matriz por parâmetros de função

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

1 Questões de Múltipla Escolha

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz

Vetores. e o programa deverá ler os valores separadamente:

Arquivos Binários UFOP 1/25

Linguagem C: Ponteiros - Alocação Dinâmica

Fundamentos de Arquivos e Armazenamento Secundário

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Elementos de programação em C

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

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

1ª Lista de Exercícios

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

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

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador.

Memória Volátil Em um computador, contrário a memória não volátil, é aquela cuja informação se perde ao se interromper o fluxo de corrente elétrica.

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

Módulo 5 Vetores e Alocação Dinâmica

Introdução à Programação C

5 Comando de Seleção Simples e Composta

As notícias são recebidas no formato texto, contendo o nome da fonte geradora (agência):

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1

Introdução à Computação

Algoritmos e Programação Parte 02 Vetores e Matrizes

Vetores e Strings. 4. Funções Básicas para manipulação de Strings. A função gets() lê uma string do teclado. Sua forma geral é:

system("pause"); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa

Técnicas de Programação: Comandos de Controle de DEE UFPB

Lista de Comandos: Arquivo texto e Binário

Estrutura do programa

Aula 15 Variáveis Indexadas (vetores)

Transcrição:

Programação II Arquivos Jocélio Passos joceliodpassos@bol.com.br C Comp Total, Cap 9 Espaço para armazenar dados em memória auxiliar (não volátil) Arquivos em C podem ser também terminais ou impressoras Abertura do arquivo : associação entre stream e arquivo: Stream Arquivo 2 Arquivos em disco suportam acesso seqüencial ou aleatório À medida que cada caracter é lido ou escrito no arquivo, o indicador de posição é incrementado, possibilitando a progressão Fechamento do arquivo : desassociação da stream com o arquivo Ao ser fechado o conteúdo de sua stream associada será escrito no dispositivo externo (descarga ou flushing) Estrutura de controle FILE (STDIO.H) 3 4 Arquivos - funções fopen () Abrir fclose () Fechar fputc () Escrever um caracter fgetc () Lê um caracter fseek () Posicionar em um byte específico fprintf () Escreve uma cadeia fscanf () Lê uma cadeia feof () End Of File? (Fim de Arquivo?) ferror () Ocorreu um erro? rewind () Reloca o indicador para o início remove () Apaga o arquivo fflush () Descarrega o arquivo 5 Ponteiro para Arquivo : variável do tipo FILE FILE *ponteiro; Exemplo : FILE *ponteiro; Abrindo um arquivo ponteiro = fopen (arquivo,modo) Exemplo : fp = fopen ( teste.txt, w ) Modos r Abre para leitura (Read) w Cria arquivo para escrita r+ Abre para leitura/escrita a Adiciona dados no final (append) 6 1

Arquivos - Abrindo Arquivo FILE *fp; if ( (fp = fopen ( teste.txt, w ))!= NULL) {... } {printf ( Arquivo não pode ser aberto. )} 1) Faça um programa que tente abrir um arquivo, chamado "teste.txt", Read only (somente leitura). Depois abra-o para Write (gravação) e grave uma frase. Fechando um arquivo fclose (ponteiro) Exemplo : fclose (fp) 7 8 { FILE *fout, *fin; fin = fopen ("teste.txt", "r"); { printf("erro ao abrir arquivo para leitura\n"); } else {printf ("O arquivo foi aberto para leitura\n"); fclose (fin); } fout = fopen ("teste.txt", "w"); // Conteúdo de teste.txt é destruído if (fout == NULL) {printf ("Erro ao abrir arquivo para gravacao\n"); } {printf ("O arquivo foi aberto para gravacao\n"); fprintf (fout, "Isto é escrito em teste.txt\n"); fclose (fout); } printf ("Pressione uma tecla para terminar\n"); getch();} 9 10 1194.99 2) Leia todos os valores float de um arquivo (floats.txt) e mostre na tela. [Floats.txt] 1.06 0.40 33.52 3.33 35.57 21.72 53.70 19.58 70.03 {// Exemplo de uso de fscanf // Leitura de dados float de um arquivo FILE *fin; float fdados; fin = fopen ("Floats.txt", "r"); {printf ("Erro ao abrir arquivo para leitura\n");} 12 2

{ while (fscanf (fin, "%f", &fdados)!= EOF) {printf ("\n%6.2f",fdados);}; fclose (fin); getch(); 3) Abra um arquivo para gravação e grave uma quantidade "n" de números inteiros aleatórios (n será informado pelo usuário). Depois abra para leitura e mostre os números gerados. a) Use fscanf e putchar b) Use fgets e printf c) Use fgetc e putchar 13 14 #include <stdlib.h> { int n; FILE *fout, *fin; char cdados; 15 fout = fopen ("teste.txt", "w"); // Conteúdo de teste.txt é destruído if (fout == NULL) { printf ("Erro ao abrir arquivo para gravacao\n"); { printf ("O arquivo foi aberto para gravacao\n"); printf ("Quantos numeros aleatorios deseja gravar? "); scanf ("%d",&n); randomize; for (int i = 0;i < n; i++) {fprintf (fout, "Valor %d = %d\n",i+1, random (1000));} fclose (fout); 16 fin = fopen ("teste.txt", "r"); { printf ("Erro ao abrir arquivo para leitura\n"); } { while (fscanf (fin, "%c", &cdados)!= EOF) {putchar (cdados);}; fclose (fin); getch(); 4) Leia o nome do arquivo a ser gravado sem extensão, que será automática (txt). Leia os caracteres digitados e grave-os no arquivo indicado aberto de forma que não seja apagado seu conteúdo prévio. Sair com ESC. Depois abra o arquivo e mostre na tela seu conteúdo. 17 18 3

#include <stdlib.h> #include <string.h> #define ESC 27 { FILE *fout, *fin; int cdado; char arquivo[80]; printf ("Digite o nome do arquivo (sem extensao) : "); scanf ("%s", arquivo); strcat (arquivo,".txt"); // concatena fout = fopen (arquivo, "a"); // Conteúdo do arquivo não é destruído, mas add // ou append if (fout == NULL) {printf ("Erro ao abrir arquivo para gravacao\n"); else { printf ("O arquivo %s foi aberto para gravacao\n", arquivo); printf ("Digite ESC para terminar\n"); 19 20 cdado = getch (); 21 while ( cdado!= ESC) {putchar (cdado); fputc (cdado, fout); cdado = getch (); fclose (fout); 22 fin = fopen (arquivo, "r"); { printf ("Erro ao abrir arquivo para leitura\n"); } {printf ("\n Conteudo do arquivo %s \n", arquivo); cdado = fgetc (fin); while ( cdado!= EOF) {putchar (cdado); cdado = fgetc (fin);}; fclose (fin); } } getch(); } 5) Usando alocação dinâmica crie uma estrutura para receber dados float de um arquivo (floats.txt). O usuário digitará quantos valores deseja receber. #include <stdlib.h> #include <string.h> #include <iostream.h> int LerMatrizFloat (FILE *pf, float *pdados, int n); 23 24 4

{// Exemplo de uso de fscanf // Leitura de uma matriz de dados float de um arquivo FILE *fin; float *pdados; int i, nnumerodados, nlidos; fin = fopen ("Floats.txt", "r"); { printf ("Erro ao abrir arquivo para leitura\n"); { printf ("Digite o numero de dados a ler\n"); scanf ("%d", &nnumerodados); pdados = (float *) malloc ((nnumerodados)* sizeof(float)); //pdados = new float[nnumerodados]; if (pdados == NULL) { printf ("Erro reservando memoria\n"); } 25 26 { nlidos = LerMatrizFloat (fin, pdados, nnumerodados); if (nlidos < 0) { printf ("Erro na leitura de dados\n"); } {if (nlidos!= nnumerodados) {printf ("Erro: nao foi possivel ler todos os dados solicitados\n"); } for (i=0; i<nlidos; i++) { printf ("\ndado %d : %6.2f",i + 1,pDados[i]); } free (pdados); // delete pdados; fclose (fin); getch(); 27 28 29 int LerMatrizFloat (FILE *pf, float *pdados, int n) {/* Descrição: Lê uma matriz de dados float de um arquivo Recebe: pf: ponteiro para um arquivo de leitura pdados: ponteiro para a matriz de floats a preencher n: número de dados a ler Devolve: número de dados realmente lidos < 0 se houve erro*/ int i ; if (!(pf == NULL)) { i = 0; 30 while ((i<n) && (fscanf (pf, "%f", &pdados[i])!= EOF)) { i++;} // pode-se trocar &pdados[i] por pdados++ //equivale a: // for (i=0; i<n && fscanf (pf, "%f", &pdados[i])!= // EOF; i++); else {i = -1;} return i;} 5

31 1) Leia da tela o nome e a média de vários alunos e grave no arquivo como no exemplo: João da Silva Souza 7.5 Maria Joana 5.5 Ana Pereira 8.5 2) Leia um arquivo contento os nomes de varias pessoas, ordene e grave novamente no arquivo. 32 3) Leia o nome do arquivo origem e o nome do destino e faça uma cópia. 4) Faça uma agenda contendo : Nome e telefone. Opção para : Adicionar um novo número Pesquisar por nome Listar todos os números. Zerar a lista [remove ("arquivo")] Sair 5) Faça um programa semelhante ao anterior contendo os dados de um funcionário : Nome, Endereço. Telefone, idade, Casado? e Salário. 6) Qual a diferença entre stream e arquivos? C Comp Total, Cap 9, 220,221 7) Enquanto o arquivo não é fechado em qual local ficam armazenados os dados? C Comp Total, Cap 9, 222 8) O que acontece com os arquivos abertos quando o programa termina? C Comp Total, Cap 9, 222 9) Em qual situação de fim de programa os arquivos não são fechados? C Comp Total, Cap 9, 222 10) Quais os motivos que provocam um erro de abertura de um arquivo? C Comp Total, Cap 9, 225 11) O que significa FOPEN_MAX? C Comp Total, Cap 9, 225 12) Quais os motivos que provocam um erro de fechamento de um arquivo? C Comp Total, Cap 9, 226 33 34 6