1. 程式人生 > >Linux 命令tail手動實現

Linux 命令tail手動實現

手動實現一個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.