- 论坛徽章:
- 0
|
利用管道做个通用的定长非定长都适用
head10.c
#include<stdio.h>
int main( int argc ,char * argv[])
{
char filename[200]={0};
char strcmd[200]={0};
char bufcount[200]={0};
int recordline=0;
int line=0;
char temp_fp[1000]={0};
FILE *fp=NULL;
FILE *fRead=NULL;
if(argc!=3)
{
printf("program line filename\n");
exit(-1);
}
line=atoi(argv[1])-1;
if(line<0)
{
printf("line error!\n");
exit(-1);
}
memset(filename,0,sizeof(filename));
strcpy(filename,argv[2]);
memset(strcmd,0,sizeof(strcmd));
sprintf(strcmd,"head -%d %s|wc -c",line,filename);
if((fRead=popen(strcmd,"r"))!= NULL)
{
fgets(bufcount,sizeof(bufcount),fRead);
recordline=atoi(bufcount);
pclose(fRead);
}
if((fp=fopen(filename,"r"))==NULL)
{
printf("can't open %s\n",filename);
exit(-1);
}
fseek(fp,recordline,SEEK_SET);
fgets(temp_fp,sizeof(temp_fp),fp);
printf("%s\n",temp_fp);
fclose(fp);
return 0;
}
编译cc -o head10 head10.c
运行例子:head10 11 aa.txt |
|