Buscar

AULAS LINGUAGEM E PROGRAMAÇÃO ASSUNTOS 7

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

11/18/2015
1
Linguagens e 
Programação
Prof. Dr. Paulo Nazareno Maia Sampaio
Aula 7
SUMÁRIO
6 Linguagens e Programação
— Arquivos
11/18/2015
2
Introdução
— a linguagem C utiliza o conceito de fluxo (stream) de 
dados para manipular vários tipos de dispositivos de 
armazenamento.
— Dados podem ser manipulados em dois diferentes 
tipos de fluxos: fluxos de texto e fluxos binários. 
— Um fluxo de texto é composto por uma seqüência de 
caracteres, que pode ou não ser dividida em linhas 
terminadas por um caracter de final de linha.
Arquivos
— Um arquivo pode estar associado a qualquer dispositivo de 
entrada e saída, como por exemplo: teclado, video, 
impressora, disco rígido, etc.
• O processo de trabalhar com arquivos em C consiste em 
três etapas:
1. Abrir o arquivo;
2. Ler e/ou gravar as informaçõeses desejadas no arquivo;
3. Fechar o arquivo.
11/18/2015
3
Funções de entrada e saída
As funções mais usadas estão armazenadas na biblioteca stdio.h
• fopen() - Abre um arquivo 
• fputc() - Escreve um caracter em um arquivo 
• fgetc() - Lê um caracter de um arquivo 
• fputs() – escreve uma string em um arquivo
• fgets() – lê uma linha de um arquivo
• fprintf()- Equivalente a printf() 
• fscanf() - Equivalente a scanf() 
• rewind() - Posiciona o arquivo no início 
• feof() - Retorna verdadeiro se chegou ao fim do arquivo
• fclose() – fecha
Abertura de arquivo
— Antes de qualquer operação ser executada com o 
arquivo, ele deve ser aberto. Esta operação associa 
um fluxo de dados a um arquivo. 
— Um arquivo pode ser aberto de diversas maneiras: 
leitura, escrita, leitura/escrita, adicão de texto, etc. A 
função utilizada para abrir o arquivo é fopen()
11/18/2015
4
A função fopen()
fopen(nome arquivo,modo de uso). 
Os modos de uso mais comuns são:
— r (de read) : abre um arquivo texto para leitura
— w (de write) : cria um arquivo texto para escrita
— a (de append) : para adicionar conteúdo no fim de um 
arquivo texto já existente
— r+ : abre um arquivo texto para leitura/escrita
— w+ : cria um arquivo texto para leitura/escrita
Exemplo de uso
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *arquivo; //vai ser associada ao arquivo
arquivo = fopen("c:/luis/teste9.txt","r"); 
if(arquivo==0)
printf("Erro na leitura do arquivo\n");
else
printf("Arquivo aberto com sucesso\n"); 
fclose(arquivo); //fecha arquivo
system("pause");
}
11/18/2015
5
Leitura e gravação
— fgets (string, tamanho, arquivo)
— fputs(string, arquivo)
— fgetc(arquivo)
— fputc(char, arquivo)
Exemplo: programa que faz copia de um 
arquivo
//copia o conteudo do arquivo tmp.txt em tmpCopy.txt
#include<stdio.h>
#include<stdlib.h>
#define MAX 80
main(){ 
int ch;
char linha[MAX];
FILE *input, *output;
// uma forma de copiar (linha a linha)
input = fopen( "tmp.txt", "r" );
if(input){
output = fopen( "tmpCopy2.txt", "w" );
fgets(linha, MAX, input);
while(!feof(input) ) {
fputs( linha, output );
fgets(linha, MAX, input);
}
fputs( linha, output ); //para escrever a ultima linha (do EOF)
fclose( input );
fclose( output );
}
else printf ("deu erro na abertura do arquivo tmp.txt\n");
system("pause"); 
11/18/2015
6
continuação
// outra forma de copiar (caracter a caracter)
input = fopen("tmp.txt", "r");
if(input){
output = fopen( "tmpCopy.txt", "w" );
ch = fgetc( input );
while( ch != EOF ) {
fputc( ch, output );
ch = fgetc( input );
}
fclose( input );
fclose( output );
}
else printf ("deu erro na abertura do arquivo tmp.txt\n");
system("pause"); 
}
Exemplo mais completo
// 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]);
}
...
11/18/2015
7
// abre o arquivo para gravacao 
if (!(p = fopen(str,"w"))) // Caso ocorra algum erro na abertura
//do arquivo da' mensagem 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"); //concatena o \n no final da linha
fputs(alunos[i],p); // grava no arquivo 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)) // Enquanto não chegar no final do arquivo p
{
printf("%s",mostratexto);
fgets(mostratexto, 50, p);
}
fclose(p); // Fecha o arquivo p
...
// outra forma de mostrar 
printf("\nde novo\n"); 
p = fopen(str,"r");
for (i=0; i<5; i++){
fgets(alunos[i], 50, p);
printf("%s",alunos[i]);
} 
fclose(p); // Fecha o arquivo 
} // do else de erro de abertura do arquivo
system("pause"); 
}
11/18/2015
8
Exercício
CARACTER EXISTENTE SUBSTITUIR POR
A Z
E Y
I X
O W
U *
Faça um programa que decodifique um determinado texto gravado em um arquivo,
a partir da seguinte tabela de substituição de caracteres, gerando um novo arquivo:
//copia o conteudo do arquivo tmp.txt em tmpCopy.txt, com alteracoes
#include<stdio.h>
#include<stdlib.h>
main(){ 
int c;
FILE *ent, *sai;
ent = fopen(“tmp.txt", "r");
if(ent){
sai = fopen( "tmpCopy.txt", "w" );
c = fgetc( ent );
while( c != EOF ) {
switch (c) {
case 'A': c='Z';break;
case 'E': c='Y';break;
case 'I': c='X';break;
case 'O': c='W';break;
case 'U': c='*';break;
} 
fputc( c, sai );
c = fgetc( ent );
}
fclose( ent );
fclose( sai );
}
else printf ("deu erro na abertura do arquivo tmp.txt\n");
system("pause"); 
}
11/18/2015
9
Exercício
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 conteudo do arquivo original e do novo.
Exemplo de solução
//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
…
11/18/2015
10
continuação
// 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"); 
}
Referências
1. Alvares, L. O. “Arquivos”. (disponível na web)
11/18/2015
11
Linguagens e 
Programação
Prof. Dr. Paulo Nazareno Maia Sampaio
Aula 7

Continue navegando