head功能:将文件中指定行数内容打印到终端。
编程思路:先打开文件流,循环读写文件,到文件末尾结束循环,将内容打印到终端,循环读写中计算行数,判断行数是否和指定行数相等,是则结束循环,最后关闭文件流。
atoi();//将字符串转化为整型数
注意:指定行数用的是“-11”,故要跳过第一个字符,用argv[1]+1,将第二个字符地址作为首地址。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char const *argv[])
{
char buf[32] = "";
int n = 0;
FILE *fp = fopen(argv[2],"r");
if(argc != 3)
{
printf("Usage:/%s <-n> <file>\n",argv[0]);
return -1;
}
if(NULL == fp)
{
perror("");
return -1;
}
while(fgets(buf,32,fp))
{
//计算行数
if(buf[strlen(buf)-1] == '\n')
n++;
//输出
printf("%s",buf);
//判断行数大小
if(n == atoi(argv[1]+1))
break;
}
fclose(fp);
return 0;
}