aula 213

Como escrever em um arquivo com a função fprintf?

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;
}

Deixe um comentário

3 + seis =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.