您的位置:首页 > 运维架构 > Linux

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

2010-06-24 16:56 295 查看
#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 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐