Manipulando Arquivo de Texto - Gil Eduardo de AndradeAbertura de Arquivo Exemplo: abrir arquivo...

32
Linguagem de Programação Gil Eduardo de Andrade Manipulando Arquivo de Texto

Transcript of Manipulando Arquivo de Texto - Gil Eduardo de AndradeAbertura de Arquivo Exemplo: abrir arquivo...

  • 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.pdf