Как перенаправить поток в несколько файлов?

В языке программирования C для перенаправления вывода в несколько файлов можно использовать функцию freopen(). Эта функция позволяет перенаправить поток данных в заданный файл.

Вот пример, демонстрирующий, как использовать freopen() для перенаправления потока вывода в несколько файлов:

#include <stdio.h>

int main() {
    FILE *file1, *file2;
    
    // Открытие первого файла для записи
    file1 = freopen("file1.txt", "w", stdout); 
    if(file1 == NULL) {
        printf("Не удалось открыть file1.txtn");
        return 1;
    }
    
    // Вывод данных в первый файл
    printf("Эта строка будет записана в file1.txtn");
    
    // Открытие второго файла для записи
    file2 = freopen("file2.txt", "w", stdout);
    if(file2 == NULL) {
        printf("Не удалось открыть file2.txtn");
        return 1;
    }
    
    // Вывод данных во второй файл
    printf("Эта строка будет записана в file2.txtn");

    // Отключение перенаправления
    freopen("/dev/tty", "w", stdout);
    
    // Вывод данных в стандартный вывод
    printf("Эта строка будет выведена на экранn");
    
    // Закрытие файлов
    fclose(file1);
    fclose(file2);
    
    return 0;
}

В этом примере программа сначала открывает файл "file1.txt" для записи, затем перенаправляет поток вывода в этот файл с помощью freopen(). Затем программа выводит строку в файл "file1.txt". Затем программа открывает файл "file2.txt" для записи и перенаправляет поток вывода в этот файл, а затем выводит строку в файл "file2.txt". После этого программа прекращает перенаправление, используя freopen("/dev/tty", "w", stdout), чтобы вернуть вывод на стандартный вывод. Наконец, программа выводит строку на стандартный вывод и закрывает оба файла.

Таким образом, при выполнении этой программы будут созданы файлы "file1.txt" и "file2.txt", и в каждом из них будет записана соответствующая строка.