Linguagem de Programação
Gil Eduardo de Andrade
Manipulando Arquivo de Texto
Arquivos
Introdução
• Em linguagem C um arquivo pode ser utilizadopara representar vários recursos, desde umarquivo de texto armazenado em disco atéuma terminal de comandos ou impressora;
• Toda vez que um programa em C inicia umacomunicação (abre o arquivo) com um arquivo umfluxo de dados com o mesmo é criado (stream);
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Arquivo Texto
Definição
• Um arquivo de texto é um recursocomputacional estruturado em linhas quepermite o armazenamento de dados;
• O arquivo de texto é normalmente utilizadopara armazenar um ou mais caracteres,contendo também caracteres especiais, comoo marcador de fim de arquivo (EOF);
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Ponteiro de Arquivo
Funcionalidade
• Um ponteiro de arquivo é aponta parainformações que definem o arquivo apontadocomo: nome, status e posição atual;
• Ele possibilita identificar um arquivoespecífico dentro de um disco rígido,permitindo que operações sejam efetuadas(leitura, escrita, etc.);
• Ele é uma variável ponteiro do tipo FILE;
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Ponteiro de Arquivo
Funcionalidade
• Um ponteiro de arquivo aponta para umconjunto de informações que define o arquivoapontado – nome, status, posição atual, etc;
• Ele possibilita identificar um arquivoespecífico dentro de um disco rígido,permitindo que operações sejam efetuadas(leitura, escrita, etc.);
• Ele é uma variável ponteiro do tipo FILE;
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Ponteiro de Arquivo
Exemplo: declarando um ponteiro de arquivo
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Declaração do ponteiro dearquivo fp que permite obterinformações e manipular umarquivo em C, criando um canalde comunicação para execuçãode operações como leitura,escrita, etc.
Abertura de Arquivo
Funcionalidade
• É chamado de “abertura de arquivo” o processoque permite criar um canal de comunicação (fluxode dados - stream) com um arquivo em específico;
• Apenas a partir da abertura é possível obterinformações sobre o mesmo e também executaroperações de escrita e leitura;
• A função em C que permite abrir uma arquivochama-se fopen() (file open);
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Abertura de Arquivo
Protótipo da Função fopen()
FILE* fopen(const char* nome, const char* modo)
nome: é nome válido para um arquivo quepode ou não incluir seu caminho;
modo: determina como o arquivo será aberto,as opções são mostradas a seguir;
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Abertura de Arquivo
Modos de Abertura
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Modo Significador Abre um arquivo texto já existente para leitura.
wAbre/Cria um arquivo texto para escrita apagando seu
conteúdo
r+ Abre um arquivo texto já existente para leitura e escrita.
w+Abre/Cria um arquivo texto para escrita e leitura apagando seu
conteúdo
a+Abre/Cria um arquivo texto para escrita e leitura mantendo seu
conteúdo – ponteiro é colocado no início do arquivo para leitura e no final para escrita
Abertura de Arquivo
Exemplo: abrir arquivo – modo de abertura “r”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Tenta abrir o arquivo texto.txt que encontra-se nomesmo diretório do arquivo executável a.outgerado pela compilação do código fonteapresentado.
Caso não seja possível abrir o arquivo (ele nãoexiste ou não tem permissão), o ponteiro fpaponta para NULL.
Não houve erro e oarquivo foi aberto comsucesso.
Abertura de Arquivo
Exemplo: abrir arquivo – modo de abertura “r”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Diretório onde encontram-se os arquivos.
O arquivo texto.txt encontra-seno mesmo diretório doexecutável a.out.
Abertura de Arquivo
Exemplo: abrir arquivo – modo de abertura “r”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Resultado da execução.
Abertura de Arquivo
Exemplo: abrir arquivo – modo de abertura “w”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Tenta abrir/criar o arquivo dados.txt que encontra-se no mesmo diretório do arquivo executável a.outgerado pela compilação do código fonteapresentado.
Caso não seja possível abrir o arquivo (nãotem permissão), o ponteiro fp aponta paraNULL.
Não houve erro e oarquivo foiaberto/criado comsucesso.
Abertura de Arquivo
Exemplo: abrir arquivo – modo de abertura “w”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Diretório após execução do modo de abertura “w”.
Ainda que o arquivo nãoexista ele acaba sendocriado quando o modo “w”é utilizado.
Abertura de Arquivo
Exemplo: abrir arquivo – modo de abertura “w”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Resultado da execução.
Leitura de Arquivo
Funcionalidade
• Após um arquivo texto ser aberto é possívelefetuar operações com a leitura e a escrita;
• A leitura permite que o conjunto de caracteresarmazenados no arquivo aberto seja lido pelaaplicação C que está manipulando-o;
• A função mais elementar que permite ler,caractere a caractere, um arquivo texto é afgetc();
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Leitura de Arquivo
Protótipo da Função fgetc()
int fgetc(FILE* fp)
fp: é o ponteiro que referencia o arquivo abertodurante a chamada da função fopen() ; int: a função fgetc retorna o código ascii (int) dos
caracteres que estão sendo lidos;EOF: o último caractere a ser lido e que indica o
final do arquivo é o EOF (end of file);
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Leitura de Arquivo
Exemplo: lendo um arquivo texto – fgetc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Conteúdo do arquivo dados.txt
Leitura de Arquivo
Exemplo: lendo um arquivo texto – fgetc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Efetua a leitura do arquivodados.txt, caractere acaractere, até encontrar oseu final (EOF).
Enquanto o caractere lidopela função fgetc fordiferente de EOF.
Leitura de Arquivo
Exemplo: lendo um arquivo texto – getch() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Resultado da execução – efetuou a leitura completa do arquivo dados.txt
Leitura de Arquivo
Exemplo: detectando final de linha – fgetc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Solicita ao usuário a linhado arquivo dados.txt queele deseja visualizar.
Verifica se o usuário digitouuma linha que não existe noarquivo dados.txt corrigindoo possível erro.
Leitura de Arquivo
Exemplo: detectando final de linha – fgetc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Rotina que identifica quando alinha escolhida pelo usuário foialcançada durante a leitura doscaracteres do arquivo. Nessemomento ela é lida e impressa atéseu final, ou seja, o caractereespecial ‘\n’ .
Rotina que conta o total de linhasque já foram lidas do arquivo.Incrementa um toda vez que pcaractere especial ‘\n’ foiatingido.
Leitura de Arquivo
Exemplo: detectando final de linha – fgetc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Escrita em Arquivo
Funcionalidade
• A escrita permite que um conjunto decaracteres seja armazenado no arquivo abertoaplicação C que está manipulando-o;
• A função mais elementar que permiteescrever, caractere a caractere, num arquivotexto é a fputc();
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Escrita em Arquivo
Protótipo da Função fputc()
int fputc(FILE* fp)
fp: é o ponteiro que referencia o arquivo abertodurante a chamada da função fopen() ;
int: a função fputc retorna o código ascii (int) docaractere que foi escrito ou EOF se a escrita nãofor bem sucedida;
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Escrita em Arquivo
Exemplo: escrevendo em arquivo texto – fputc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Conteúdo do arquivo texto.txt antes da escrita
Escrita em Arquivo
Exemplo: escrevendo em arquivo texto – fputc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Solicita que o usuário digiteseu nome armazenando-o navariável nome.
Percorre a variável nomearmazenando, através dafunção fputc, todos os seuscaracteres no arquivotexto.txt.
Escrita em Arquivo
Exemplo: escrevendo em arquivo texto – fputc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Escrita em Arquivo
Exemplo: escrevendo em arquivo texto – fputc() – modo “a+”
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Conteúdo do arquivo texto.txt depois da escrita
Outras Funcionalidades
Removendo um Arquivo – remove()
• int remove(const char *nome);
int: indica se o arquivo foi removido comsucesso. ‘0’ – removido com sucesso; ‘outrovalor’ – não foi possível remover o arquivo;
nome: indica o nome (com caminho) do arquivoque se deseja remover;
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Outras Funcionalidades
Reiniciando Ponteiro de Arquivo – rewind()
• void rewind(File *fp);fp: ponteiro do arquivo que foi aberto
anteriormente e que deseja-se reiniciar, emoutras palavras, fazer com que o ponteiro fpseja direcionado novamente ao início doarquivo e permitindo uma nova leitura domesmo;
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Arquivos Texto
Exemplos Utilizados no Documentohttp://www.gileduardo.com.br/ifpr/pcii/downloads/pc_exdoc15.zip
Aula 15: Manipulando Arquivo Texto – Gil Eduardo de Andrade
Mais Exemplos sobre o Conteúdohttp://www.gileduardo.com.br/ifpr/pcii/downloads/pc_ex15.zip
Exercícios sobre o Conteúdo
http://www.gileduardo.com.br/ifpr/lp/dowloads/lp_pratica15.pdf
http://www.gileduardo.com.br/ifpr/pcii/downloads/pc_exdoc15.ziphttp://www.gileduardo.com.br/ifpr/pcii/downloads/pc_exdoc15.ziphttp://www.gileduardo.com.br/ifpr/lp/lp_exe03.ziphttp://www.gileduardo.com.br/ifpr/pcii/downloads/pc_ex15.ziphttp://www.gileduardo.com.br/ifpr/pcii/downloads/pc_ex15.ziphttp://www.gileduardo.com.br/ifpr/lp/dowloads/lp_pratica15.pdfhttp://www.gileduardo.com.br/ifpr/lp/dowloads/lp_pratica15.pdfTop Related