Os fluxos padrão em arquivos permitem ao programador ler e escrever em arquivos da maneira padrão com a qual o já líamos e escrevíamos na tela.
A função fprintf() funciona como a função printf(). A diferença é que a saída de fprintf() é um arquivo e não a tela do computador. Protótipo:
int fprintf (FILE *fp,char *str,...);
Como já poderíamos esperar, a única diferença do protótipo de fprintf() para o de printf() é a especificação do arquivo destino através do ponteiro de arquivo.
A função fscanf() funciona como a função scanf(). A diferença é que fscanf() lê de um arquivo e não do teclado do computador. Protótipo:
int fscanf (FILE *fp,char *str,...);
Como já poderíamos esperar, a única diferença do protótipo de fscanf() para o de scanf() é a especificação do arquivo destino através do ponteiro de arquivo.
Talvez a forma mais simples de escrever o programa da página c960.html seja usando fprintf () e fscanf(). Fica assim:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *p;
char str[80],c;
/* Le um nome para o arquivo a ser aberto: */
printf("\n\n Entre com um nome para o arquivo:\n");
gets(str);
if (!(p = fopen(str,"w"))) /* Caso ocorra algum erro na abertura do arquivo..*/
{ /* o programa aborta automaticamente */
printf("Erro! Impossivel abrir o arquivo!\n");
exit(1);
}
/* Se nao houve erro, imprime no arquivo, fecha ...*/
fprintf(p,"Este e um arquivo chamado:\n%s\n", str);
fclose(p);
/* abre novamente para a leitura */
p = fopen(str,"r");
while (!feof(p))
{
fscanf(p,"%c",&c);
printf("%c",c);
}
fclose(p);
return(0);
}
AUTO AVALIAÇÃO
Veja como você está. Escreva um
programa que leia uma lista de nomes e idades de um arquivo texto. Prepare um arquivo para
ser lido com nomes e idades. Apresente os dados lidos em forma de tabela na tela. Use as
funções de sua preferência, mas faça pelo menos duas versões do programa usando
funções de leitura diferentes.
![]()
Curso de C do CPDEE/UFMG - 1996 - 1999