Online C Compiler
Abrir no compilador

Edição didática em português. O código e suas saídas preservam o original.

Arquivos em C

Abra, escreva, leia e feche arquivos com funções da biblioteca padrão.

Abrir no compilador

Arquivos em C
Abra, escreva, leia e feche arquivos com funções da biblioteca padrão.

fopen retorna um fluxo ou NULL se não conseguir abri-lo. O modo determina se você lê, acrescenta ou substitui conteúdo; abrir com w pode truncar um arquivo existente. Verifique o resultado antes de usar fprintf, fgets ou outras operações.

Controle o laço de leitura pelo resultado da função que lê, não por uma verificação antecipada de feof. fgets precisa conhecer o tamanho do buffer e pode ler uma linha em partes. Diferencie fim de arquivo de erro quando necessário.

Feche os fluxos com fclose e verifique erros de escrita. No compilador remoto, os arquivos podem existir apenas durante uma execução: não os use como armazenamento permanente nem suponha acesso aos arquivos do seu computador.

Código C

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    const char *filepath = "/tmp/demo_output.txt";
    FILE *fout = fopen(filepath, "w");
    if (fout == NULL) {
        perror("Error opening file for writing");
        return EXIT_FAILURE;
    }
    fprintf(fout, "Hello from the online C compiler file sandbox!\nLine 2: Ephemeral file storage.\n");
    fclose(fout);
    FILE *fin = fopen(filepath, "r");
    if (fin == NULL) {
        perror("Error opening file for reading");
        return EXIT_FAILURE;
    }
    char buffer[256];
    printf("--- File Content Readout ---\n");
    while (fgets(buffer, sizeof(buffer), fin) != NULL) {
        printf("%s", buffer);
    }
    fclose(fin);
    return EXIT_SUCCESS;
}
Abrir no compilador

Saída esperada

--- File Content Readout ---
Hello from the online C compiler file sandbox!
Line 2: Ephemeral file storage.

Perguntas frequentes

Por que o código e a saída continuam em inglês?

Palavras-chave, identificadores e textos verificados pelos testes são preservados para não alterar o programa. As explicações e os controles estão traduzidos.