Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação Aula 06 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 de fluxos de texto e fluxos binários. 2 Roteiro da Aula •Arquivos 3 Arquivos Pode estar associado a qualquer dispositivo de entrada e saída, como por exemplo: teclado, video, impressora, disco rígido, etc. 4 Arquivos 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. 5 Funções de entrada e saída As funções mais usadas para manipulação de arquivos estão armazenadas na biblioteca stdio.h 6 Funções de entrada e saída 7 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ções de entrada e saída 8 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 associa um fluxo de dados a um arquivo. 9 Abertura de arquivo – fopen() Um arquivo pode ser aberto de diversas maneiras: • Leitura • Escrita • Leitura/escrita • Etc 10 Abertura de arquivo - fopen() 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) 11 Abertura de arquivo - fopen() 12 Exemplo de uso 13 Exemplo de uso 14 Exemplo de uso 15 // 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]); } // 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 16 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 deste texto. Mostre o conteúdo do arquivo original e do novo. 17 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 18 Possibilidade de resposta // 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"); } 19
Compartilhar