首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【C语言】《C跟指针》打印文件中的最长的一行字符串

2013-04-02 
【C语言】《C和指针》打印文件中的最长的一行字符串来源 《Pointers on C》:Write a programe that reads input

【C语言】《C和指针》打印文件中的最长的一行字符串

来源 《Pointers on C》:

      Write a programe that reads input lines one by one until end of file is reached,determines the length of each input line,and then prints out only the longest line that was found. To simplicify matters, you may assume that no input line will be longer than 1000 characters.


问题解析:读文件,判断每一行字符的长度,输出最长的一行。为了简化问题,假设每一行的长度都不会大于1000个字符。

解题思路:


首先判断文件的行数,然后使用fgetc函数读取每一行,并将结果保存在结构体中,结构体的成员变量为 key,value    ( key就是行号,value就是字符串长度)

找出最长的字符串之后,就按照行号进行读取。

代码如下:

[root@localhost program]# ./printlongestDemo 15len.key=  0len.value=  18len.key=  1len.value=  19len.key=  2len.value=  0len.key=  3len.value=  10len.key=  4len.value=  1len.key=  5len.value=  9len.key=  6len.value=  21len.key=  7len.value=  49len.key=  8len.value=  16len.key=  9len.value=  53len.key=  10len.value=  52len.key=  11len.value=  25len.key=  12len.value=  0len.key=  13len.value=  20len.key=  14len.value=  1

这样,拥有最大字符串长度的所有的行号我们都找到了。下面的任务就是按照行号进行输出了。

运用以前学到的知识,我想首先对这个结构体数组按照关键字(value值)进行排序。

今天的关键收获就是学会了使用fpos_t类型还有操作 fpos_t类型的函数 fgetpos(source,&pos1); 和 fsetpos(source,&pos1); 对文件操作更熟练了!

太晚了,明天接着说。。。


热点排行