Как скопировать определенную строчку из файла?

Чтобы скопировать определенную строку из файла в языке программирования C, вам потребуется открыть файл для чтения, найти нужную строку и скопировать ее содержимое в другую переменную или файл.

Вот пример программы на языке C, которая демонстрирует этот процесс:

#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 256

int main() {
    FILE *inputFile;
    FILE *outputFile;
    char buffer[MAX_LENGTH];
    char searchKey[MAX_LENGTH];
    
    printf("Введите строку, которую нужно скопировать: ");
    fgets(searchKey, sizeof(searchKey), stdin);
    searchKey[strcspn(searchKey, "n")] = 0;  // удалить символ новой строки
    
    inputFile = fopen("input.txt", "r"); // открытие файла для чтения
    outputFile = fopen("output.txt", "w"); // открытие файла для записи
    
    if (inputFile == NULL || outputFile == NULL) {
        printf("Ошибка открытия файлов.n");
        return 1; // выход из программы с ошибкой
    }
    
    while (fgets(buffer, sizeof(buffer), inputFile)) {
        if (strstr(buffer, searchKey)) { // поиск строки
            // копирование строки в файл вывода
            fputs(buffer, outputFile);
            
            // или копирование строки в переменную
            // char copyBuffer[MAX_LENGTH];
            // strcpy(copyBuffer, buffer);
        }
    }
    
    printf("Строка скопирована успешно.n");
    
    fclose(inputFile); // закрываем файлы
    fclose(outputFile);
    
    return 0; // успешное выполнение программы
}

В данном примере программа предлагает пользователю ввести строку, которую нужно скопировать. Затем она открывает файл с именем "input.txt" для чтения и файл с именем "output.txt" для записи. Затем она построчно читает файл в буфер и проверяет, содержит ли каждая строка введенную пользователем строку. Если строка содержит введенную подстроку, то она записывается в файл "output.txt". Вместо записи строки в файл, ее можно скопировать в другую переменную, как показано в комментарии.

В конце программа закрывает файлы и сообщает пользователю об успешном выполнении операции.

Пожалуйста, обратите внимание, что в приведенном коде используется функция fgets для чтения строк из файла. Она будет читать строку с символом новой строки (n) в конце. Поэтому в коде есть строка searchKey[strcspn(searchKey, "n")] = 0;, которая удаляет символ новой строки из введенной пользователем строки. Это нужно, чтобы функция strstr корректно работала при поиске строки.