简单实现linux head命令

本文主要实现了linux head命令的-n和-v参数,关于head命令可以参考man手册.

#include 
#include 
#include 
#include 
#define N 100
int main(int argc,char *argv[])
{
	int ch,nline=10;//默认行数为10行
	char buf[N];
	while((ch=getopt(argc,argv,"vn:"))!=-1)	
	{
		#ifndef DEBUG
		printf("argc-->%d,optind-->%d\n",argc,optind);
		#endif
		switch(ch)
		{
			case 'v':
			strcpy(buf,argv[argc-1]);
			printf("---->%s<----\n",buf);//如果有-v参数则打印文件名
			break;
			case 'n':
			nline=atoi(optarg);//这个选项必须要带参数,把参数的行数转为数字
			break;
			case '?':
			printf("unknown option\n");
			exit(1);
		}
	}
	if(optind+1>argc)
	{
		printf("usage %s [-nv]  file\n",argv[0]);
		exit(2);
	}
	FILE* fp;
	char str[1024];
	fp=fopen(argv[argc-1],"r");
	if(fp==NULL)
	{
            perror("fopen");
            exit(2);
        }
	int i;	
	for(i=0;i

你可能感兴趣的:(LINUX)