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 */
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 */
相关文章推荐
- android中一个TextView实现其中内容大小颜色不同的效果
- 某公司面试题:最长顺子;输入很多个整数(1<=数值<=13),返回其中可能组成的 最长的一个顺子(顺子中数的个数代表顺的长度); 其中数字1也可以当作14用
- golang语言实现读取csv文件内容,把相同的内容提取到另外一个文件
- Linux-C基础知识学习:C语言作业-将5个学生成绩保存在一个数组中,单独实现一个计算平均成绩的average函数, 在main函数中获取该函数返回的平均值,并打印。
- 在listview嵌套listview 并且想实现点击其中一个item隐藏item的内容
- 实现一个命令行linux终端应用程序,把输入的指定文件,映射到内存中,并打印出文件内容
- linux 不回车直接读取一个字符的方法(termios结构的描述了终端的模式,在这段代码中我们改变了它,使得终端能够接收到键盘输入马上返回。)
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
- 内容输出Linux文件系统的的实现:创建一个文件的过程
- linux下c语言实现tail -f功能---实时读取变化文件中的增量内容
- 将多个文本文件的内容合并为一个文件的Java实现
- 实现一个读取UTF-8文本文件的类
- C#读取Excel的指定页面的内容,并返回成一个DataTable
- win32+QT 实现exe中执行返回的网页内容重定向到txt文件,根据需求读取里面内容
- 在linux中用C程序实现读取一个文件中的字符,计算它的个数,并把个数显示在另外一个文件夹内
- 怎样读取一个文本文件的内容?
- Linux shell 读取一个data文件,扫描其中的一个内容
- 怎样读取一个文本文件的内容? (zt)
- 同一页面中实现点击其中一个iframe中的链接后,将链接内容显示到另一iframe