Скопировать текстовый файл, зеркально поменяв порядок слов

Я не могу понять, есть код на зеркальное изменение строк, но как слова поменять не понимаю( Помогите, пожалуйста

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <string.h> 
#include <malloc.h> 
#include <stdlib.h> 
#define MAXLEN 1000 // максимальная длина строки 
#define NLINES 1000  // максимальное число строк 

int main()
{
    FILE* fp_open, * fp2_out;
    char** lines; // указатель на динамический массив
    int i;
    int nlines = 0; // количество строк 

    fp_open = fopen("D:\\Study\\Studdy\\Programming\\Lab10_5\\vhod.txt", "rt");
    fp2_out = fopen("D:\\Study\\Studdy\\Programming\\Lab10_5\\vihid.txt", "wt");

    if (fp_open == NULL)
    {
    return 1;
    }
    lines = (char**)malloc(NLINES * sizeof(char*));

    memset(lines, 0, NLINES * sizeof(char*)); // заполнение 
    while (!feof(fp_open))
    {
        char line[MAXLEN];

        
        char* ptr = fgets(line, MAXLEN, fp_open);//чтение строки
        int len; //длина текущей строки 
        if (ptr == NULL)

        {
            break; // файл исчерпан 
        }
        // определить длину строки   
        len = (int)strlen(line);
        if (nlines >= NLINES)
        {
            nlines++;
            lines = (char**)realloc(lines, nlines * sizeof(char*));
            lines[nlines - 1] = 0;
        }
        lines[nlines] = (char*)malloc(len + 1);
        strcpy(lines[nlines], line); //копируем строку в статик массиве
        nlines++;
    }
    for (i = nlines - 1 ; i >= 0; i--)
    fputs(lines[i], fp2_out);
    fclose(fp_open);
    fclose(fp2_out);

    // очищаем память
    for (i = 0; i < nlines; i++)
    {
        if (lines[i] != NULL)
            free(lines[i]);
    }

    // отказаться от динамического массива указателей 
    if (lines != NULL)
        free(lines);
    return 0;
}

Ответы (0 шт):