Back
Close

Programação C

MarcoVaz
4,074 views

Gravando e lendo caracteres em Arquivos C


  • Após a abertura do arquivo é possível Ler e/ou gravar dados nele.
  • A função fputc() possibilita a gravação de dados caracter a caracter.

int fputc(int ch, FILE *arq);

  • A função fgetc() possibilita a leitura de dados do arquivo caracter a caracter.

int fgetc(FILE *arq);

  • Quando não houver mais dados a serem lidos no arquivo, a fgetc devolve a constante EOF (end of file), que está definida na biblioteca stdio.h, indica o fim de um arquivo. Isso indica chegamos ao fim do arquivo e não se pode realizar a leitura dos dados. Em geral, o valor de EOF é igual −1.
  • Após a abertura do arquivo é necessário realizar o teste de fim de arquivo (o arquivo pode estar vazio):
if((fp = fopen("arquivo.txt","r")) == NULL){

printf( "Erro na abertura do arquivo");
exit(1);
}
  • O Exemplo a seguir exibe a gravação e leitura de dados caracter a caracter.
    • No comando fopen será criado o arquivo arqtexto.txt na pasta corrente
    • A string tentrada será gravada no arquivo caracter a caracter.
    • O arquivo será fecado e posteriormente aberto para leitura.
    • Utilizamos a função fgetc() para ler esses dados do arquivo caracter a caracter:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *farq;
int i;
char tentrada[50] = {"Teste de gravacao e leitura de dados-arquivo texto"};
char tsaida[50], car;
if((farq = fopen("arqtexto.txt","w")) == NULL){
printf( "Erro na abertura do arquivo");
exit(1);
}
for (i=0; i < strlen(tentrada); i++)
{
fputc(tentrada[i],farq);
}
fclose(farq);
farq = fopen("arqtexto.txt", "r");
if (farq == NULL) // Pode-se fazer o teste dessa forma
{
printf("Erro na abertura do arquivo");
exit(1);
}
printf("\n\nVou ler e mostrar o texto gravado....\n\n");
i=0;
car=fgetc(farq);
while (car!=EOF)
{
tsaida[i]=car;
printf("%c",tsaida[i]);
i++;
car =fgetc(farq);
}
fclose(farq);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • A constante EOF pode ser substituida pela função feof() que realiza o teste de fim de arquivo.
    int feof(FILE *arq)
  • O teste do while do exemplo acima poderia ficar assim: while ( !feof (farq) )
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants