Além de armazenar informações em arquivos, os programas frequentemente precisam recuperar dados previamente gravados.
A leitura de arquivos permite que informações persistentes sejam carregadas para a memória do programa, possibilitando sua utilização em cálculos, consultas, relatórios e diversas outras funcionalidades.
Assim como ocorre com a escrita, a linguagem C disponibiliza funções específicas para leitura de dados em arquivos. Muitas dessas funções são semelhantes às funções de entrada padrão que já utilizamos ao longo da disciplina.
fscanfA função fscanf() é equivalente à função scanf(), porém realiza a leitura a partir de um arquivo.
Sua sintaxe é:
int fscanf(FILE *arquivo, const char *formato, ...);
O primeiro parâmetro indica o arquivo de onde os dados serão lidos.
Suponha que o arquivo aluno.txt possua o seguinte conteúdo:
Joao
8.5
Podemos realizar a leitura da seguinte forma:
#include <stdio.h>
int main() {
char nome[50];
float nota;
FILE *arquivo = fopen("aluno.txt", "r");
if (arquivo != NULL) {
fscanf(arquivo, "%s", nome);
fscanf(arquivo, "%f", ¬a);
printf("Nome: %s\n", nome);
printf("Nota: %.1f\n", nota);
fclose(arquivo);
}
return 0;
}
Saída:
Nome: Joao
Nota: 8.5
fscanfA função retorna a quantidade de variáveis que foram lidas com sucesso.
Por exemplo:
int quantidade = fscanf(arquivo, "%d %d", &a, &b);