Shell命令编写——查看文件的命令head -n

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>


#define BUFFERSIZE 4096


int main(int ac,char *av[]){
	
	/*创建输入文件的文件描述符*/
	int in_fd;
	
	int len = sizeof(char);


	char buf;




	/*对输入时的参数进行判定*/
	if(ac != 3){
		fprintf(stderr,"usage: %s source destination\n",*av);
		exit(0);
	}


	char *line = av[1];


	int nline;


        /*我只处理第二个字符串av[1]的前两个数字*/
       
        if(line[2]=='\0'){
        	nline = (int)line[1]-48;
	}else{
		nline = ((int)line[1]-48)*10+((int)line[2]-48);		
	}	


	if((nline>=100)||(line[0]!='-'))
	{
		printf("Please input '-n' as the param\n");
		exit(0);
	}


	if((in_fd=open(av[2],O_RDONLY))==-1){
		printf("Can not open:%s\n",av[2]);
		exit(1);
	}


	while(((len=read(in_fd,&buf,len))>0)&& (nline > 0)){
	        if((write(1,&buf,len))!=len){
		        printf("Write error to\n");
	                exit(1);
		}
		if(buf == '\n'){
		        nline--;
		}
	}




	if(close(in_fd)==-1){
		printf("Error close files\n");	
		exit(1);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值