Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình in 10 dòng cuối cùng của chuỗi trong C++

Tương tự bài trước nhưng cố định in 10 dòng cuối. Sử dụng cùng thuật toán với strrchr và lùi lại 10 lần.

Ví dụ minh họa (C++)

#include <bits/stdc++.h>
using namespace std;

#define DELIM '\n'

void print_last_lines(char* str, int n) {
    if (n <= 0) return;
    size_t cnt = 0;
    char* target_pos = nullptr;
    target_pos = strrchr(str, DELIM);
    if (!target_pos) {
        cout << "Chuoi chi co mot dong\n";
        return;
    }
    while (cnt < n) {
        while (str < target_pos && *target_pos != DELIM) --target_pos;
        if (*target_pos == DELIM) { --target_pos; ++cnt; }
        else break;
    }
    if (str < target_pos) target_pos += 2;
    cout << target_pos << endl;
}

int main() {
    char* str1 = "str1\nstr2\nstr3\nstr4\nstr5\nstr6\nstr7\nstr8\nstr9\n"
                 "str10\nstr11\nstr12\nstr13\nstr14\nstr15\nstr16\nstr17\n"
                 "str18\nstr19\nstr20\nstr21\nstr22\nstr23\nstr24\nstr25";
    print_last_lines(str1, 10);
    return 0;
}

Kết quả

str16 str17 str18 str19 str20 str21 str22 str23 str24 str25