Manipulação de arquivo texto em C

Cinthia Mikaela de Souza

Na manipulação de um arquivo, há basicamente três etapas que precisam
ser realizadas:

Abrir o arquivo;

Ler e/ou gravar dados;

Fechar o arquivo;


ABRIndo ARQUIVO 

FILE *arquivo =  fopen ( "nome_do_arquivo.txt" , "modo_de_acesso" );


Esta função recebe como primeiro parâmetro, o nome do arquivo, que deve ser uma string ou o caminho completo para o arquivo por exemplo: C://Documentos/arquivo.txt ou o
caminho em relação ao diretório atual por exemplo: arquivo.txt, e o segundo parâmetro deve ser o modo de acesso.

fragmento de código widget

Modo de acesso

ModoSignificado
wAbre o arquivo somente para escrita no início do arquivo.
Apagará o conteúdo do arquivo se ele já existir,
criará um arquivo novo se não existir.
w+Abre o arquivo para escrita e leitura, apagando o conteúdo pré-existente.
rAbre o arquivo somente para leitura. O arquivo deve existir.
r+Abre o arquivo para leitura e escrita. O arquivo deve existir.
aAbre o arquivo para escrita no fi nal do arquivo.
Não apaga o conteúdo pré-existente.
a+Abre o arquivo para escrita no final do arquivo e leitura.


O valor de retorno da função fopen() é muito importante!

Se houver um erro na abertura/criação do arquivo, a função retornará o
valor NULL.

escrita e leitura em arquivo

   //Escrever em arquivo de texto

void fputc ( int caractere , FILE * fluxo );
void fputs ( char * string , FILE * fluxo );
void fprintf ( FILE *fluxo , formatacao ,char * string) ;

   //Ler de arquivo de Texto

int fgetc ( FILE * fluxo );
void fgets ( char * string , int tamanho , FILE * fluxo );
void fscanf ( FILE *fluxo , formatacao ,char * string) ;


fechando arquivo

Ao terminar de usar um arquivo, você deve fechá-lo. Isso é feito pela função
fclose(), essa função recebe como parâmentro o nome do ponteiro para o arquivo.

fclose ( FILE * fluxo ) ;


Os programas abaixo irão mostrar exemplos da utilização das funções

apresentadas anteriormente. Teste estes programas para obter uma

melhor compreensão do conteúdo abordado.

​​​​​​​


fprintf()

O código abaixo grava duas string formatadas em um arquivo de texto

utilizando a função fprintf().

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

int main ()
{

    FILE *arq;
    char Nome[100];

    //Abre arquivo para escrita
    arq = fopen ("dados.txt ","w");
    
    //Verifica se abriu
    if (!arq)
    {
        printf ( " Erro na abertura do arquivo ");
        exit (0) ;
    }

    //Grava 2 nomes no arquivo
    for (int i = 1; i<=2; i ++){
        printf("Digite seu nome: ");
        scanf("%s",&Nome);
        fflush(stdin);
        fprintf (arq,"%s\n",Nome);
     }

    // Fecha o arquivo
    fclose (arq);
    return 0;
}


fragmento de código widget

Fscanf()

O código abaixo lê uma string de um arquivo de texto e imprime seu conteúdo

enquanto não encontrar a marcação de final de arquivo.

# include <stdio.h>
# include <stdlib.h>
# include <iostream>

int main ()
{
    FILE *arq;
    char Texto[1000];
    int i;

    //Abre arquivo para leitura
    arq = fopen ("dados.txt ","r");

    //Verifica se abriu
    if (! arq)
    {
        printf ( " Erro na abertura do arquivo ");
        exit (0) ;
    }

    // Lê e imprimi os dados do arquivo enquanto não for final de arquivo
    while (!feof(arq))
    {
        fscanf (arq,"%s",&Texto);
        if(!feof(arq))printf ("%s\n",Texto );
    }
    //Fecha o arquivo
    fclose (arq);
    return 0;
}


fragmento de código widget
fragmento de código widget
fragmento de código widget

FPUTS()

O código abaixo lê uma string do teclado e grava em um arquivo de texto.

#include <stdio.h>
#include <iostream>

int main ()
{
    FILE *arq;
    char sentence [256];

    printf ("Entre com a string a ser gravada: ");
    fgets (sentence,256,stdin);
    arq = fopen ("arquivo.txt","a");
    fputs (sentence,arq);
    fclose (arq);
    return 0;
}


fragmento de código widget

fgets()

O código abaixo lê uma string de um arquivo de texto. Repare que, a função puts imprime na tela (stdout) uma string especificada, incluindo uma nova linha ('\n') ao final da impressão.

#include <iostream>
#include <stdio.h>
#include <windows.h>

int main()
{
    FILE * arq;
    char sentence [256];

    arq = fopen ("arquivo.txt","r");
    if (arq == NULL)
    {
        printf("Erro ao abrir o arquivo!");
        exit(0);
    }

    while(!feof(arq)){
    if (fgets (sentence,256,arq) != NULL )
        puts(sentence);
    }
    fclose (arq);

    return 0;
}


fragmento de código widget
fragmento de código widget
Voltar