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

本文介绍了一个使用C语言实现的程序,该程序通过文件描述符处理输入文件,并将数据输出到标准输出。程序接收三个参数:源文件路径、目标输出位置和输出次数。如果输入文件无法打开或输出错误,程序会终止并打印相应的错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值