LINUX C实现读取一个文本文件并返回其中最长的行的内容

 #include <stdio.h>

  •    2 #include "lines.h"
  •    3 #include <stdlib.h>
  •    4
  •    5 char *readLines(const char *file, size_t *longest) //file 文件名
  •    6 {
  •    7    FILE *fp; 
  •    8    char *p;
  •    9    char ch;
  •   10    int log=0,i=0,lg=1,j=1; //最长 i表示个数 j表示第几行 lg表示第几行
  •   11    if((fp=fopen(file,"r"))==NULL) // open file
  •   12    {
  •   13       *longest=0;
  •   14       return NULL;
  •   15    }
  •   16    while((ch=fgetc(fp))!=EOF) //判断文件是否结束
  •   17    {
  •   18       if(ch=='/n')
  •   19       {
  •   20           if(log<i)
  •   21           {
  •   22              log=i;
  •   23              lg=j;
  •   24           }
  •   25           j++;
  •   26           i=0;    
  •   27       }
  •   28       else
  •   29       {
  •   30          i++;
  •   31       }
  •   32    }
  •   33 //目前确定了长度 和 第几行
  •   34 //printf("log=%d lg=%d/n",log,lg);
  •   35 if(log==0)
  •   36 {
  •   37     *longest=0;
  •   38     p=NULL;
  •   39 }
  •   40 else
  •   41 {
  •   42    p=(char *)malloc(sizeof(char)*log);
  •   43    *longest=log;
  •   44    rewind(fp);
  •   45    i=0;
  •   46    while((ch=fgetc(fp))!=EOF && log>0)
  •   47    {
  •   48         if(lg==1)
  •   49         {
  •   50            p[i++]=ch;
  •   51            log--;             
  •   52         }
  •   53         else
  •   54         {
  •   55           if(ch=='/n')
  •   56           {
  •   57              lg--;
  •   58           }
  •   59         }
  •   60    }
  •   61   }
  •   62    fclose(fp);
  •   63    return p;
  •   64 }
  •   65 /*
  •   66 int main()
  •   67 {
  •   68   size_t b=0;
  •   69   char *e;
  •   70   int i;
  •   71   e=readLines("/root/kt/unit5/U5E1/jjk.txt",&b);
  •   72   for(i=0;i<b;i++)
  •   73   putchar(*(e+i));
  •   74   printf("b=%u",b);
  •   75   return 0;
  •   76 }
  •   77 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熔钧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值