С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
#1

Распечатайте 15 последних строк текстового файла. - C++

05.12.2013, 15:10. Просмотров 286. Ответов 6
Метки нет (Все метки)

Дан большой текстовый файл с длиной строк не более 100 символов. Распечатайте 15 последних строк файла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 15:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Распечатайте 15 последних строк текстового файла. (C++):

Функция,которая считывает из файла только n последних строк - C++
Привет! Подскажите как прописать функцию, перед этим уже прописала потоковое чтение из файла и посчитала количество строк в файле. Спасибо!

Разработать программу, выводитящая на экран по желанию пользователя: а) N первых строк файла; б) N последних - C++
Создать текстовый файл с произвольным текстом. Разработать программу, которая выводит на экран по желанию пользователя: а) N первых строк...

Произведение строк из текстового файла - C++
Составить текстовый файл, состоящий из строк следующего вида: <количество чисел в строке><число 1><число 2>………….<число N>. Написать...

Считывание строк из текстового файла - C++
Доброго времени суток! Дана задача: Подготовить файл со списком из 20 сотрудников (в каждой строке файла записаны фамилия, имя и...

Поочередное считывание строк из текстового файла - C++
Здравствуйте! Есть текстовый файл в котором, например, 3 строки разной длинны: 11a1a1a1 2b22b2b2b2b2 3n3nnn33 для них есть...

Удалить первые 16 строк текстового файла - C++
есть текстовый документ...нужно удалить первые 16 строк

6
dzrkot
05.12.2013, 15:25
  #2

Не по теме:

ну копировать, вставить, потом нажимаете печать, в чём проблема?

0
rescr1pt
33 / 34 / 1
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 15:37 #3
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int main ()
{
    std::ifstream ifs ("input.txt", std::ifstream::in);
    if (!ifs.is_open())
    {
        cout << "File not found!";
        cin.get();
        return -1;
    }
 
    string source;
    char c = ifs.get();
    while (ifs.good()) 
    {
        source.push_back(c);
        c = ifs.get();
    }
 
    if (source.size() < 15)
        cout << "Must be greater then 15!\n";
    else
    {
 
        string last = source.substr(source.size()-15, source.size());
        cout << last << endl;
    }
 
    // pause
    cin.get();
}
1
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
05.12.2013, 15:40 #4
Может так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
 
 
int main() {
   std::size_t const maxLineLength = 100;
   std::size_t const lineCount     = 15;
 
   char lines[lineCount][maxLineLength + 1];
 
   std::ifstream istream("big.txt");
 
   std::size_t i = 0;
   for ( ; istream.getline(lines[i], maxLineLength + 1); i = (i + 1) % lineCount);
 
   for (std::size_t j = 0; j != lineCount; ++j) {
      std::cout << lines[(i + j) % lineCount] << std::endl;
   }
}
1
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
05.12.2013, 16:02  [ТС] #5
Цитата Сообщение от rescr1pt Посмотреть сообщение
Можно так
Оно выводит последние 15 символов, а не строк(
0
rescr1pt
33 / 34 / 1
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 16:29 #6
Цитата Сообщение от kobrjatina Посмотреть сообщение
Оно выводит последние 15 символов, а не строк(
задачу не верно понял. Вот так должно сойти.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <sstream>
 
using namespace std;
 
int main ()
{
    const int count = 15;
    std::ifstream ifs ("input.txt", std::ifstream::in);
    if (!ifs.is_open())
    {
        cout << "File not found!";
        cin.get();
        return -1;
    }
 
    string source;
    char c = ifs.get();
    while (ifs.good()) 
    {
        source.push_back(c);
        c = ifs.get();
    }
 
    vector<string> vecs;
    stringstream ss(source);
    string token;
 
    while (getline(ss, token, ' '))
        vecs.push_back(token);
 
    if (vecs.size() < count)
        cout << "Must be greater then " << count << endl;
    else
    {
        for (size_t i = count-1; i > 0; --i)
            cout << vecs.at(vecs.size() - i) << endl;
    }
 
    // pause
    cin.get();
}
1
gromo
372 / 271 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
05.12.2013, 20:08 #7
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
int main() {
    // Сколько последних строк выводить.
    std::size_t const lines_to_output = 15;
    // Откроем файл для ввода.
    std::ifstream istream("/home/z/example");
    if(!istream.is_open())
    {
        std::cerr << "Cann't open file!"
                     << std::endl;
        return 1;
    }
    // Посчитаем количество строк.
    std::istreambuf_iterator<char> begin(istream), end;
    std::size_t lines_count = count(begin, end, '\n');
 
    // Передвинем внутренний указатель файла в начало.
    istream.seekg(0, std::ios_base::beg);
 
    std::string line;
    std::vector<std::string> text;
    // С какой строки начинать сохранять строки в вектор.
    std::size_t line_num_begin = lines_count - lines_to_output +1;
 
    for(std::size_t curLine = 1; curLine <= lines_count; ++curLine)
    {
        std::getline(istream, line, '\n');
        if(curLine >= line_num_begin)
            text.emplace_back(line);
    }
 
    for(auto& i : text)
        std::cout << i
                     << std::endl;
 
    istream.close();
    return 0;
}
1
05.12.2013, 20:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 20:08
Привет! Вот еще темы с ответами:

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла - C++
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Считывание строк из текстового файла и создание папки - C++
ВОзникла задача создать кучу папок с разными именами, возникла идея, что можно запихать эти названия в текстовый файл, где новая строка-имя...

Не могу разобраться с выводом строк из текстового файла - C++
Программа которая считывает из файла слово и четыре числа, и забивает их в соответствующие массивы. В файле текст записан в таком...

Переписать каждую из строк текстового файла в массив в том же порядке - C++
Имеется тестовый файл, содержащий 20 строк. Переписать каждую из его строк в массив в том же порядке.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.