Online C Compiler
Открыть в компиляторе

Учебная версия на русском. Код и его вывод сохранены в исходном виде.

Работа с файлами в C

Открывайте, записывайте, читайте и закрывайте файлы стандартными библиотечными функциями.

Открыть в компиляторе

Работа с файлами в C
Открывайте, записывайте, читайте и закрывайте файлы стандартными библиотечными функциями.

fopen возвращает поток или NULL при неудаче. Режим определяет чтение, добавление или замену содержимого; режим w может обрезать существующий файл. Проверяйте результат до fprintf, fgets и других операций.

Управляйте циклом чтения по результату читающей функции, а не предварительной проверкой feof. fgets требует размер буфера и может читать длинную строку частями. При необходимости отличайте конец файла от ошибки.

Закрывайте потоки через fclose и проверяйте ошибки записи. В удалённом компиляторе файлы могут существовать лишь в пределах одного запуска: это не постоянное хранилище и не доступ к файлам вашего компьютера.

Код 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;
}
Открыть в компиляторе

Ожидаемый вывод

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

Частые вопросы

Почему код и вывод остаются на английском?

Ключевые слова, идентификаторы и строки, проверяемые тестами, сохранены, чтобы не менять программу. Объяснения и элементы управления переведены.