Académique Documents
Professionnel Documents
Culture Documents
Primeiramente, escreva algo no "poema.txt", pode ser um poema, seu nome completo,
endereo etc.
Escreva algo e coloque esse arquivo na mesma pasta do executvel.
Assim, nosso endereo simplesmente "poema.txt", e como queremos ler, vamos usar o
mtodo de abertura "r".
Declaramos uma varivel de nome "ch" do tipo char, que vai receber caractere por
caractere do arquivo.
Isso feito usando o seguinte cdigo:
ch=fgetc(arq)
E isso deve ser feito enquanto o caractere apontando no arquivo no for EOF.
Fazemos essa checagem assim:
(ch=fgetc(arq))!= EOF
Assim, nosso programa que mostra todo o contedo de um arquivo na tela, :
#include <stdio.h>
int main(void)
{
char url[]="poema.txt";
char ch;
FILE *arq;
arq = fopen(url, "r");
if(arq == NULL)
printf("Erro, nao foi possivel abrir o arquivo\n");
else
while( (ch=fgetc(arq))!= EOF )
putchar(ch);
fclose(arq);
return 0;
}
Vamos usar o cdigo do exemplo passado deste tutorial para percorrer todos os
caracteres, e cada vez que encontrar um "\n" incrementamos a varivel "num",
inicializada com 0.
Nosso cdigo :
#include <stdio.h>
int main(void)
{
char url[]="poema.txt",
ch;
int num=0;
FILE *arq;
arq = fopen(url, "r");
if(arq == NULL)
printf("Erro, nao foi possivel abrir o
arquivo\n");
else
while( (ch=fgetc(arq))!= EOF )
if(ch == '\n')
num++;
printf("Existem %d linhas no arquivo\n", num);
fclose(arq);
return 0;
}
Como as outras, retorna EOF caso no tenha conseguido fazer a leitura de maneria
correta.
Programador 10 10 10
Crie um programa que exiba o nome de cada aluno e sua mdia.
A primeira coisa que devemos fazer analisar o contedo do arquivo e procurar por
padres.
Nesse caso, o padro se repete em toda linha, pois todas as linhas so iguais: string,
espao, nmero, espao, nmero, espao, nmero, enter
Ou seja: "%s %f %f %f\n"
Como h um padro em toda linha, podemos usar a fscanf para armazenar esses dados.
Vamos precisar de uma string e trs floats.
Aps pegar esses dados, exibimos o nome do aluno e a mdia das notas.
Nosso cdigo em C fica:
#include <stdio.h>
int main(void)
{
char url[]="notas.txt",
nome[20];
float nota1, nota2, nota3;
FILE *arq;
arq = fopen(url, "r");
if(arq == NULL)
printf("Erro, nao foi possivel abrir o
arquivo\n");
else
while( (fscanf(arq,"%s %f %f %f\n", nome, ¬a1,
¬a2, ¬a3))!=EOF )
printf("%s teve media %.2f\n", nome,
(nota1+nota2+nota3)/3);
fclose(arq);
return 0;
}
Essa funo vai abrir o arquivo apontado por arq e vai pegar do primeiro caractere at o
new line, ou at o limite de "numBytes" bytes e vai armazenar essa string na
"minhaString".
Ou seja, vamos usar ela para pegar cada linha de um arquivo e armazenar na forma de
string.
Por exemplo, escreva em um arquivo "dados.txt"o seguinte contedo:
"Meu nome: [escreva seu nome completo]
Moro em: [escreva seu endereo]
Estudo pelo C Progressivo
E pretendo ser programador C"
Agora vamos criar um programa que vai ler e exibir esses dados:
#include <stdio.h>
int main(void)
{
char url[]="dados.txt",
info[50];
FILE *arq;
arq = fopen(url, "r");
if(arq == NULL)
printf("Erro, nao foi possivel abrir o
arquivo\n");
else
while( (fgets(info, sizeof(info), arq))!=NULL )
printf("%s", info);
fclose(arq);
return 0;
}
Podemos usar cada linha dessas e armazenar em uma string diferente (string que guarda
o nome, outra que guarda o endereo, outra que guarda o CPF, RG etc, igual aqueles
formulrios que preenchemos na internet).
Vale notar que, como a fgets retorna uma string, para checar se chegamos ao fim do
arquivo, basta checarmos se o retorno dela diferente de NULL.