Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Manipulação de Ficheiros de texto em Linguagem C

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

  • Font Size
    #1

    C / C++ Manipulação de Ficheiros de texto em Linguagem C

    Das várias funções disponíveis para a leitura e escrita de ficheiros de texto byte-a-byte, ou seja, caracter-a-caracter, vou concentrar este pequeno exemplo apenas nas funções fgetc e fputc.

    fgetc – Ler um caracter de um ficheiro
    Protótipo: int fgetc(FILE *nomeficheiro)
    Exemplo de leitura de um caracter:

    caracter = fgetc(nome);
    Notar que o caracter lido é armazenado na variável caracter, do tipo int, e que a função vai posicionar -se no ficheiro na próxima posição, ou seja, no caracter seguinte. Não há necessidade de invocar funções de posicionamento para esse efeito.

    Programa exemplo :

    O programa seguinte lê o ficheiro “texto.txt” e conta o número de caracteres.

    Para focar apenas o essencial não vou incluir qualquer tipo de verificação (falha de segmentação) e parto do princípio que existe o ficheiro “texto.txt” na directoria onde vamos testar o programa. Será conveniente utilizar um editor de texto para criar o ficheiro de texto, que pode ser algo do tipo:




    Agora vamos ao código.

    #include <stdio.h>
    int main(){
    FILE *fp; /* apontador para o ficheiro */
    int contador = 0; /* variável para contar os caracteres */

    /* Abrir o ficheiro */
    07
    fp = fopen("texto.txt", "r");

    /* Contar os caracteres do ficheiro */
    while (fgetc(fp) != EOF)
    contador++;
    printf("Número total de caracteres = %d\n",contador);

    /* Fechar o ficheiro */
    fclose(fp);

    /* Terminar o programa */
    return 0;
    }
    Observações:

    O ficheiro é aberto no modo de leitura, e parte-se do princípio que este existe.
    Cada caracter lido não é armazenado numa variável, sendo utilizado apenas na condição do ciclo “while”.
    Foi utilizado um ciclo “while” para percorrer o ficheiro byte-a-byte, utilizando a constante simbólica EOF para controlar o fim do ficheiro (EOF=End Of File, cujo valor é -1).
    Conte atentamente os caracteres do ficheiro de texto, pois até as mudanças de linha são representadas por um caracter “invisível”.
    Caso pretendessemos realizar alguma operação com os caracteres lidos, como por exemplo mostrar o conteúdo do ficheiro antes de apresentar a contagem dos caracteres, facilmente poderíamos alterar o código para a versão apresentada a seguir.


    Código:
    #include <stdio.h>
    int main(){
        FILE *fp;           /* apontador para o ficheiro */
        int contador = 0;   /* para contar os caracteres */
        int caracter;       /* inteiro para armazenar cada caracter lido */
     
        /* Abrir o ficheiro */
        fp = fopen("texto.txt", "r");
     
        /* Contar os caracteres do ficheiro */
        while ((caracter=fgetc(fp)) != EOF){
            putchar(caracter);
            contador++;
        }
        printf("\nNúmero total de caracteres = %d\n",contador);
     
        /* Fechar o ficheiro */
        fclose(fp);
     
        /* Terminar o programa */
        return 0;
    }
    Observações:

    A variável “caracter” foi declarada com o tipo “int”. Isto deve-se ao facto de haver necessidade de comparar os caracteres lidos com a constante EOF, que como já referi tem o valor -1, que não é suportado pelo tipo “char”.
    fputc – Escrever um caracter num ficheiro

    Protótipo: int fputc(int caracter, FILE *nomeficheiro)

    Exemplo de escrita de um caracter:


    Código:
    fputc('x', nome);
    O caracter ‘x’ é escrito no ficheiro apontado por “nome”.

    Programa exemplo :

    O programa seguinte armazena uma cadeia de caracteres num ficheiro “texto.txt”. Caso o ficheiro já exista este será substituído.



    Código:
    #include <stdio.h>
    int main(){
        FILE *fp;                                /* apontador para o ficheiro */
        char texto[]="que lindo dia\nai ai";    /* texto a enviar para o ficheiro */
        int i=0;                                /* para ler a string caracter a caracter */
     
        /* Abrir o ficheiro */
        fp = fopen("texto.txt", "w");
     
        /* Contar os caracteres do ficheiro */
        while (texto[i]!='\ 0')
            fputc(texto[i++], fp);
     
        /* Fechar o ficheiro */
        fclose(fp);
     
        /*Terminar o programa */
        return 0;
    }
    Observações:

    Não tem nada a ver com linguagem C, mas tive que utilizar um espaço entre os caracteres \ e 0. Caso queiram compilar o programa não se esqueçam de remover este espaço. O plugin que estou a utilizar no WordPress não está a 100%. Corrijo isto assim que me for possível
    O ficheiro é aberto no modo de escrita “w”, pelo que caso não exista será criado, e caso contrário será substituído ( ver modos de abertura ).
    A string é percorrida caracter-a-caracter até ser detectado o seu terminador, ou seja, o caracter ”.
    A instrução fputc(texto[i++], fp); primeiro escreve o caracter no ficheiro, e de seguida incrementa o valor de i.


    Font: Graciano Torrão
    sigpic
    Milorde - Conhecimento não é crime
    Fui útil ? Clique em OBRIGADO


    Milorde & Marissa


    [/CENTER]
X
Working...
X