Linux 命令tail手动实现

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:24   1653   0

手动实现一个tail命令.默认输出十行.假如文件小于十行,则将文件全部输出.也可指定输出的行数.假如指定的行数超过了文件行数上限,则完整输出整个文件.

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void tail(const char *filename,int count = 10)
{
 int realline = 0;
 char temp;
 string stackstr("");
 ifstream fd(filename);
 if(!fd)
 {
  cerr<<"open error!"<<endl;
  return;
 }
 while(fd.get(temp))
 {
  stackstr += temp;
  if(temp == '\n')
   realline++;
 }
 int j = 0;
 if(realline > count)
 {
  while(j < stackstr.length())
  {
   if(count == realline)
   {
    cout<<stackstr[j];
   }
   else
   {
    if(stackstr[j] == '\n')
     count ++;
   }
   j++;
  }

 }
 else
 {
  while(j < stackstr.length())
  {
   cout<<stackstr[j];
   j++;
  }
 }

}
int main(int argc,char**argv)
{
 tail("C:\\Users\\fjy\\Desktop\\new.txt",5);
 return 0;
}

tail函数第一个参数指定文件名,第二个参数指定输出的行数,默认为10.

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP