Program to print last N lines in c++


In this tutorial, we will be discussing a program to print the last N 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 and the number of lines to be printed from the last. Our task is to start from the last and print all the N lines counting from the last.

Example

#include <bits/stdc++.h>
using namespace std;
#define DELIM '\n'
//printing the last N 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, 14);
   return 0;
}

Output

str12
str13
str14
str15
str16
str17
str18
str19
str20
str21
str22
str23
str24
str25

Updated on: 02-Jan-2020

215 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements