В каждой строке текстового файла поменять местами первое и последнее слова

lyna

В каждой строке текстового файла поменять местами первое и последнее слова.Очень нужна ваша помощь!!! Вот есть пример того, что написала я, но он не правильно работает(((
#include "stdafx.h"
#include <iostream>
#include <string>
#include "locale.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include <ctype.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    FILE *file;
        char name[256];
        char str[256];
    char *str1[50];
    char *str2[50];
        const char *leks = " ";
    int j,i;
        if((file = fopen("text.txt", "r+"))==NULL) 
    {
         printf ("Ошибка при открытии файла!");
             exit (1);
        }
    
         printf("\tИсходный текст:\n\n");
         while(fgets(str, 12, file) != NULL)
         {
             printf("%s", str);
     }
         fseek(file, 0, SEEK_SET);
        printf("\n");
    printf ("\n\tПреобразованный текст: \n\n");
        while(fgets(str, 12, file) != NULL) // sizeof(str)
        {
         j = 0;
        str1[j] = strtok(str, leks);
         while(str1[j] != NULL)
       {
        j++;
        str1[j] = strtok(NULL, leks); 
        }
        for(int i = 0; i < j; i++)
        {
        swap(str1[0], str1[j-1]);
        }
 
       for(int i = 0; i < j; i++)
        printf ("%s ", str1[i]);
         }
 
    fclose (file);
    getch ();
    return 0;
}
1 ответ

lyna

lyna, вот поправил ваш код:
#include "stdafx.h"
#include <iostream>
#include <string>
#include "locale.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include <ctype.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    FILE *file;
    char name[256];
    char str[256];
    char *str1[50];
    char *str2[50];
        const char *leks = " ";
    int j,i;
        if((file = fopen("text.txt", "r+"))==NULL) 
    {
         printf ("Ошибка при открытии файла!");
             exit (1);
        }
    
         printf("\tИсходный текст:\n\n");
         while(fgets(str, 256, file) != NULL)
         {
             printf("%s", str);
     }
         fseek(file, 0, SEEK_SET);
        printf("\n");
    printf ("\n\tПреобразованный текст: \n\n");
        while(fgets(str, 256, file) != NULL) // sizeof(str)
        {
         j = 0;
        str1[j] = strtok(str, leks);
         while(str1[j] != NULL)
       {
        j++;
        str1[j] = strtok(NULL, leks); 
        }
    
        swap(str1[0], str1[j-1]);
        char *p = str1[0];
        while (p = strchr(p, '\n'))
        {
            *p++ = ' ';
        }
        
 
       for(int i = 0; i < j; i++)
        printf ("%s ", str1[i]);
       printf ("\n");
         }
 
    fclose (file);
    getch ();
    return 0;
}