Определить в K-ой строке файла первое и последнее слово - C (СИ)
Формулировка задачи:
Дано:
В текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится число K.Требуется:
определить в K-ой строке файла fin.txt первое и последнее слово, поменять их местами и сформировать текстовый файл fout.txt, в который записать измененную строку. Помогите с файлами пожалуйста !!!Решение задачи: «Определить в K-ой строке файла первое и последнее слово»
textual
Листинг программы
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <Windows.h>
#include <algorithm>
#include <locale>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
fstream fin("fin.txt", fstream::app);
string ch;
while (getline(cin, ch)) { //вводим строку
ch += '\n';
fin << ch; //отпр. ее в файл
}
ch.clear();
fin.close();
fin.open("fin.txt"); //сбрасываем позицию
cin.clear(); //сбрасываем флаг EOF
int x, sym, y = 0; cin >> x;//вводим какую строку читаем
if (x > 1) {
while ((sym = fin.get()) != EOF)
if (sym == '\n') //ищем эту строку
if (++y == x - 1)
break;
getline(fin, ch); //переписываем ее в string
}
else if (x > 0) getline(fin, ch);//если в первой строке
if (x - 1 != y || !x) return 0;
vector<string> words(1);
fin.close();
for (int i = 0; i < ch.size(); ++i) { //выбираем слова из нее
if (isalpha(static_cast<unsigned char>(ch[i])) || isdigit(static_cast<unsigned char>(ch[i])))
words.back() += ch[i];
else if (!words.back().empty() && i != ch.size() - 1)
words.emplace_back();
}
swap(words.front(), words.back());
fin.open("fin2.txt", fstream::app);
for (int i = 0; i < words.size(); ++i) //записываем в новый файл строку
fin << words[i] << ' ';
fin << '\n';
fin.close();
return 0;
}