最近在复习C语言 看到linux下head 和cat 的命令很好使 尝试自己实现了一下
所以就弄了两个程序 一个是读取指定行数 一个是 读取几行;
系统环境 ubuntu 9.10
编程环境 GCC 4.41
截图如下:
实现指定文本文件行数的读取_职场
 
代码如下
/*程序功能 实现指定文本的行数读取
*使用方法 a.out <filename> <line no>
*/


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

char    *read_line(const char *pathname,int line_n)
{
                     int len,file_size;
                     char *str,*buf,*p;
                     FILE *fp;
                     fp=fopen(pathname,"r" );
                     if(fp==NULL){
            perror("fopen error");
        exit(1);
      }
        fseek(fp,0,SEEK_END);
        file_size=ftell(fp);
        str=(char *)calloc(file_size,sizeof(char));
        rewind(fp);
        fread(str,sizeof(char),file_size,fp);
        str[file_size]='\0';
             p=str;
             char *q;
             int n=line_n-1;
             q=str;
             while(*p++){        
            if(*p=='\n')
                 line_n--;
            if(line_n==0)
                 break;
        }
        while(*q++)
        {
         if(*q=='\n')
                 n--;
         if(n==0)
            break;
         }
         q++;
         if(*p=='\0')
             {
          printf("已经到行尾\n");
          exit(1);
             }
        len=p-str;
             str[len]='\0';
        buf=q;
        free(str);
        fclose(fp);
        return buf;                        
  }

int main(int argc, char** argv)
{
  int i=atoi(argv[2]);
  char *buf;
     buf= read_line(argv[1],i);
     printf("%s\n",buf);
  return 0;
}