Dando continuidade ao estudo de manipulação de arquivos com a linguagem C, vamos aprender nesta aula como escrever em um arquivo com a função fprintf.
Perceba que a leitura correta de um arquivo está diretamente relacionada com a forma como os dados foram escritos no arquivo. Por isso há tantas funções diferentes para leitura e escrita em arquivo texto. Até o momento vimos apenas como escrever texto. Com a função fprintf veremos que também podemos escrever números.
A função fprintf é muito semelhante à função printf. Pense em tudo o que você já fez com a função printf. A função fprintf faz o mesmo, porém em um arquivo. Assim, usando %d, %s, %c, %f, conseguimos escrever qualquer informação em um arquivo texto.
Imagine que desejamos pedir ao usuário seu nome, idade e altura e salvar todos estes dados em um arquivo, isso pode ser feito assim:
// lendo nome, idade e altura e escrevendo em arquivo printf("Digite nome, idade e altura: "); scanf("%99[^\n]%d%f", nome, &idade, &altura); fprintf(file, "%s %d %.2f\n", nome, idade, altura);
O primeiro parâmetro é o ponteiro para o arquivo onde iremos escrever. O segundo parâmetro é uma string que formata os dados. Perceba que primeiro vamos escrever o nome ( %s ) e em seguida há um espaço, depois a idade, outro espaço e a altura com duas casas decimais. Há também uma quebra de linha ao final para que não haja mais de um nome por linha. A última parte são as variáveis de onde virão estes dados, nome, idade e altura.
Se queremos ler nome, idade e altura de várias pessoas, basta então colocar o trecho de código acima dentro de uma repetição, assim:
do{ printf("Digite nome, idade e altura: "); scanf("%99[^\n]%d%f", nome, &idade, &altura); fprintf(file, "%s %d %.2f\n", nome, idade, altura); printf("\nDigite 1 para inserir outro registro. "); scanf("%d", &opcao); scanf("%c"); }while(opcao == 1);
Código de exemplo completo em C para escrever em arquivo com a função fprintf
/* Aula 213: Como escrever em um arquivo texto com a função fprintf? Código escrito por Wagner Gaspar Junho de 2021 Modos de abertura de arquivos: w -> Escrita r -> leitura a -> anexar r+ -> leitura e escrita w+ -> leitura e escrita (apaga o conteúdo caso o arquivo exista) a+ -> leitura e escrita (adiciona ao final do arquivo) */ void escrever(char f[]) { FILE *file = fopen(f, "w"); char nome[100]; int opcao, idade; float altura; if(file) { do{ printf("Digite nome, idade e altura: "); scanf("%99[^\n]%d%f", nome, &idade, &altura); fprintf(file, "%s %d %.2f\n", nome, idade, altura); printf("\nDigite 1 para inserir outro registro. "); scanf("%d", &opcao); scanf("%c"); }while(opcao == 1); fclose(file); } else printf("\nERRO ao abrir arquivo!\n"); } int main() { char nome[] = {"conto.txt"}; escrever(nome); return 0; }