Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Linguagem de Programação Aula 6 Prof. Luis Gonzaga Paulo Contextualização � Em linguagem de programação C se trabalha com o conceito de fluxo de manipulação de dados, também chamado de stream, o que possibilita ao programador trabalhar com dispositivos de armazenamento � Os dados podem ser manipulados de duas formas ou fluxos, denominados fluxos de texto e fluxos binários Roteiro da Aula � Arquivo Arquivo � Pode estar associado a qualquer dispositivo de entrada e de saída; como exemplo: teclado, vídeo, impressora, disco rígido etc. � A manipulação de arquivos em linguagem de programação consiste em três fases: 1. abrir o arquivo 2. ler e/ou gravar as informações no arquivo 3. fechar o arquivo 2 Funções de Entrada e de Saída � As funções mais usadas para manipulação de arquivos estão armazenadas na biblioteca stdio.h Função Descrição fopen( ) Abre um arquivo fputc( ) Escreve um caractere em um arquivo fgetc( ) Lê um caractere em um arquivo fputs( ) Escreve uma string em um arquivo fprintf( ) Equivalente ao comando printf() Função Descrição fscanf( ) Equivalente ao comando scanf() rewind( ) Posiciona o arquivo no início feof( ) Retornar verdadeiro se chegou ao final do arquivo fclose( ) Fecha o arquivo fread( ) Leitura de arquivos Abertura de Arquivo � Primeira operação que deve ser realizada na manipulação de arquivos • Operação que associa um fluxo de dados a um arquivo Abertura de Arquivo – fopen() � Um arquivo pode ser aberto de diversas maneiras: • leitura • escrita • leitura/escrita • etc. Sintaxe: fopen(nome arquivo, modo de uso). Nome arquivo = nome do arquivo modo de uso = tipo do arquivo (ascii ou binário) e objetivo de uso (leitura, escrita, anexação) 3 13 Modos de utilização de arquivos Modo Significado r Abre um arquivo-texto para leitura w Cria um arquivo-texto para escrita a Anexa a um arquivo-texto rb Abre um arquivo binário para leitura wb Cria um arquivo binário para escrita ab Anexa um arquivo binário r+ Abre um arquivo-texto para leitura/escrita w+ Cria um arquivo-texto para leitura/escrita a+ Anexa ou cria um arquivo-texto para leitura/escrita r+b Abre um arquivo binário para leitura/escrita w+b Cria um arquivo binário para leitura/escrita a+b Anexa a um arquivo binário para leitura/escrita Exemplo de Uso 14 Exemplo de Uso 15 16 // Programa que grava o nome de cinco alunos em um arquivo e // depois le o arquivo e mostra os nomes escritos #include <stdio.h> #include <string.h> #include <stdlib.h> main(){ FILE *p; char c, str[30], frase[80] = "Este e um arquivo chamado: “; char alunos [5][50], mostratexto [50]; int i,j=0, cont=0; // Le um nome para o arquivo a ser aberto: printf("\n\n Entre com um nome para o arquivo:\n"); gets(str); // le os nomes dos alunos e coloca no vetor alunos for (cont=0;cont<5;cont++) { printf ("\nInforme o nome do aluno %d: ", cont+1); gets(alunos[cont]); } Exemplo de Uso // abre o arquivo para gravacao if (!(p = fopen(str,"w"))) // Caso ocorra algum erro na abertura do arquivo // damensagem e nao faz nada { printf("Erro! Impossivel abrir o arquivo!\n"); } else { // Se nao houve erro, grava o arquivo e o fecha ... for (i=0; i<5; i++) { strcat(alunos[i], "\n"); fputs(alunos[i],p); } fclose(p); // fecha o arquivo ao final da gravacao printf("\nTerminei de escrever, agora vou ler.\n"); // Abre novamente, agora para leitura p = fopen(str,"r"); //uma forma de mostrar fgets(mostratexto, 50, p); while (!feof(p)) { printf("%s",mostratexto); fgets(mostratexto, 50, p); } fclose(p); // Fecha o arquivo p 17 Exercício Prático � Considere um arquivo tipo texto já gravado. Gere um novo arquivo com uma nova linha, com dados lidos do teclado, entre a terceira e a quarta linha desse texto. Mostre o conteúdo do arquivo original e do novo. 18 4 Possibilidade de Resposta //copia o conteudo do arquivo original.txt em copia.txt #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 150 main(){ int i; char linha[MAX]; FILE *entrada, *saida; entrada = fopen( "original.txt", "r" ); if(entrada){ saida = fopen( "copia.txt", "w" ); for (i=1;i<4;i++){ fgets(linha, MAX, entrada);//le as primeiras linhas fputs(linha, saida ); // copia para o arquivo de saida } printf("Informe o conteudo da linha a ser inserida: "); gets(linha); strcat(linha,"\n"); fputs(linha, saida ); // escreve a linha adicionada 19 // copia o resto do arquivo, sem alteracao fgets(linha, MAX, entrada); while(!feof(entrada) ) { fputs( linha, saida ); fgets(linha, MAX, entrada); } fputs( linha, saida ); //para escrever a ultima linha (do EOF) fclose( entrada ); fclose( saida ); } else printf ("deu erro na abertura do arquivo original.txt\n"); system("pause"); } 20 Possibilidade de Resposta
Compartilhar