Program to print last 10 lines in C++


In this tutorial, we will be discussing a program to print the last 10 lines.

For this, we will be provided with a string that consists of the new line character to denote the start of the next line. Our task is to start from the last and print all the 10 lines counting from the last.

Example

#include <bits/stdc++.h>
using namespace std;
#define DELIM '\n'
//printing the last 10 lines
void print_last_lines(char *str, int n){
   if (n <= 0)
      return;
   size_t cnt = 0; //storing the number of lines
   char *target_pos = NULL;
   //finding the initial position of last line
   target_pos = strrchr(str, DELIM);
   if (target_pos == NULL){
      cout << "Given string is a single line string";
      return;
   }
   //moving to the start position of the 1st line
   while (cnt < n){
      //moving to the next lines
      while (str < target_pos && *target_pos != DELIM)
         --target_pos;
      if (*target_pos == DELIM)
         --target_pos, ++cnt;
      //if string has less than 10 lines the break
      else
         break;
   }
   if (str < target_pos)
      target_pos += 2;
   cout << target_pos << endl;
}
int main(void){
   char *str1 ="str1\nstr2\nstr3\nstr4\nstr5\nstr6\nstr7\nstr8\nstr9” "\nstr10\nstr11\nstr12\nstr13\nstr14\nstr15\nstr16\nstr17" "\nstr18\nstr19\nstr20\nstr21\nstr22\nstr23\nstr24\nstr25";
   print_last_lines(str1, 10);
   return 0;
}

Output

str16
str17
str18
str19
str20
str21
str22
str23
str24
str25

Updated on: 02-Jan-2020

145 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements