Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Manipulando arquivos em C (parte 2) (Linux )

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Manipulando arquivos em C (parte 2) (Linux )

    Esta é a segunda parte de um tutorial que trata a manipulação de arquivos em C. Aqui veremos o funcionamento de funções como: fprintf, fscanf, fwrite, fread, fseek, etc.
    Por: Kleber de Andrade Reis

    Introdução


    Nesse artigo vamos aprender mais sobre a manipulação de arquivos em C, veremos o uso de diversas funções, algumas básicas e outras nem tanto.

    Com esse artigo estou finalizando esse assunto e lembrando que essa é a segunda parte, abaixo o link para a primeira parte:

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Lendo e escrevendo em um arquivo usando fprintf e fscanf
    fprintf

    Escreve uma constante de caracteres em um arquivo, essa função funciona como printf, sendo que a diferença é a saída padrão, que em fprintf é um arquivo e em printf é o monitor.

    Protótipo: int fprintf (FILE *fp, const char *format,...);

    * Parâmetro 1: "FILE *fp" - o arquivo a ser escrito.
    * Parâmetro 2: "const char *format" - o que será escrito.


    fscanf

    Lê uma constante de caracteres de um arquivo, essa função funciona como scanf, sendo que a diferença é a entrada padrão que em fscanf é um arquivo e em scanf é o teclado.

    Protótipo: int fscanf (FILE *fp, const char *format,...);

    * Parâmetro 1: "FILE *fp" - o arquivo a ser lido.
    * Parâmetro 2: "const char *format" - qual a variável que receberá os dados do arquivo.


    Exemplo do uso das funções fprintf e fscanf

    Código:
    /* Lendo e escrevendo em um arquivo */
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
            FILE *fp;
            char s[50],c;
    
            /* Lê um nome para o arquivo a ser aberto: */
            printf("\n\n Digite o caminho completo inclusive o nome para o arquivo:\n");
            gets(s);
    
            if (!(fp = fopen(s,"w")))  /* Caso ocorra algum erro na abertura do arquivo o programa será finalizado */
            {
                    printf("Erro! Impossível abrir o arquivo!\n");
                    exit(1);
            }
            /* Se não houve erro, imprime no arquivo...*/
            fprintf(fp,"Este e um arquivo chamado:\n%s\n", s);
            fclose(fp);   /* fecha o arquivo  */
    
            /* abre novamente para a leitura  */
            fp = fopen(s,"r");
            while (!feof(fp))
            {
                    fscanf(fp,"%c",&c);
                    printf("%c",c);
            }
            fclose(fp);
            return(0);
    }
    Outras funções
    Arquivos pré-definidos


    Quando se começa a execução de um programa, o sistema automaticamente abre alguns arquivos pré-definidos:

    * stdin: dispositivo de entrada padrão (geralmente o teclado);
    * stdout: dispositivo de saída padrão (geralmente o vídeo);
    * stderr: dispositivo de saída de erro padrão (geralmente o vídeo);
    * stdaux: dispositivo de saída auxiliar (em muitos sistemas, associado à porta serial);
    * stdprn: dispositivo de impressão padrão (em muitos sistemas, associado à porta paralela).


    Cada uma destas constantes pode ser utilizada como um ponteiro para FILE, para acessar os periféricos associados a eles. Desta maneira, pode-se, por exemplo, usar:

    c =getc(stdin);

    para efetuar a leitura de um caracter a partir do teclado, ou:

    putc(c, stdout);

    para imprimí-lo na tela.

    fgets


    Lê uma string de um arquivo. A função lê a string até que um caracter de nova linha seja lido /n ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha for lido, ele fará parte da string, o que não acontecia com gets. A string resultante sempre terminará com /0 (por isto somente tamanho-1 caracteres, no máximo, serão lidos).

    Protótipo: char *fgets (char *str, int tamanho, FILE *fp);

    * Parâmetro 1 "char *str": a variável que receberá a string.
    * Parâmetro 2 "int tamanho": o limite máximo de caracteres a serem lidos.
    * Parâmetro 3 "FILE *fp": o arquivo que será lido.


    fputs

    Escreve uma string num arquivo.

    Protótipo: char *fputs (char *str, FILE *fp);

    * Parâmetro 1: "char *str" - a variável que contém os dados a serem escritos no arquivo.
    * Parâmetro 2: "FILE *fp" - o arquivo a ser escrito.


    fread


    Leitura de bloco de dados.

    Protótipo: unsigned fread (void *buffer, int numero_de_bytes, int count, FILE *fp);

    * Parâmetro 1: "void *buffer" - variável na qual serão armazenados os dados lidos.
    * Parâmetro 2: "int numero_de_bytes" - o número de bytes a ser lido.
    * Parâmetro 3: "int count" - indica quantas unidades devem ser lidas.
    Parâmetro 4: "FILE *fp" - arquivo a ser lido.


    fwrite

    Leitura de bloco de dados.

    Protótipo: unsigned fwrite (void *buffer, int numero_de_bytes, int count, FILE *fp);

    * Parâmetro 1: "void *buffer" - variável na qual serão transmitidos os dados ao arquivo.
    * Parâmetro 2: "int numero_de_bytes" - o número de bytes a ser escrito.
    * Parâmetro 3: "int count" - indica quantas unidades devem ser escritas.
    * Parâmetro 4: "FILE *fp" - arquivo a ser escrito.


    fseek


    Procuras e acessos randômicos em arquivos. Esta move a posição corrente de leitura ou escrita no arquivo de um valor especificado, a partir de um ponto especificado.

    Protótipo: int fseek (FILE *fp, long numbytes, int origem);

    * Parâmetro 1: "FILE *fp" - arquivo a ser manipulado.
    * Parâmetro 2: "long numbytes" - indica quantos bytes o cursor de posição do arquivo será movimentado apartir da sua posição atual.
    * Parâmetro 3: "int origem" - indica apartir de onde os numbytes serão contados. Abaixo uma tabela com os possíveis valores:

    Código:
    Nome 	Valor 	Significado
    SEEK_SET 	0 	Início do arquivo
    SEEK_CUR 	1 	Ponto corrente no arquivo
    SEEK_END 	2 	Fim do arquivo

    rewind


    Retorna a posição corrente do arquivo para o início.

    Protótipo: void rewind (FILE *fp);

    * Parâmetro: "FILE *fp" - arquivo a ser manipulado.

    Bibliografia e conclusão
    Abaixo relaciono a bibliografia utilizada para o desenvolvimento desse tutorial:

    * Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    * Programando em C/C++ - "A Bíblia" - Jamsa.
    * Manual do próprio Linux - para usar basta digitar: $ man nome_da_funcao.


    Conclusão


    Com mais esse artigo encerro o assunto de manipulação de arquivos em C, porém deixo um alerta e um conselho:

    O que vimos com esse tutorial é apenas um começo e se você precisa ou quer aprender sobre esse assunto, pesquise e use sua criatividade.

    Fonte: vivaoLinux
    Postado Por: RedDeviL


X
Working...
X