Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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);
}
Enter to Rename, Shift+Enter to Preview
- 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) )
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content