Определить в 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д