免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhjufe
打印 上一主题 下一主题

请问:怎么从某一确定的行开始读文件? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-04-07 15:17 |只看该作者
原帖由 flw 于 2007-4-7 14:06 发表
晕~为一个 fgets 的细节讨论半天,至于嘛。

for i = 1 to 9:
    while( fgets( buffer, sizeof(buffer), fp ) && buffer[strlen(buffer)-1] != '\n' );

// 现在就位于第十行开始处了。

挑个毛病,别介意。
strlen是个隐患

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
32 [报告]
发表于 2007-04-07 15:19 |只看该作者
原帖由 soul_of_moon 于 2007-4-7 15:17 发表

挑个毛病,别介意。
strlen是个隐患

strlen("") -1 = -1?
呵呵,那应该特殊处理一下。

论坛徽章:
0
33 [报告]
发表于 2007-04-07 15:21 |只看该作者
原帖由 flw 于 2007-4-7 15:19 发表

strlen("") -1 = -1?
呵呵,那应该特殊处理一下。




怎么怎么看不懂。。。。。?汗。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
34 [报告]
发表于 2007-04-07 15:26 |只看该作者
原帖由 flw 于 2007-4-7 15:19 发表

strlen("") -1 = -1?
呵呵,那应该特殊处理一下。

刚试了一下,不会呀!
你说的隐患到底是指什么呢?

论坛徽章:
0
35 [报告]
发表于 2007-04-07 15:27 |只看该作者
原帖由 flw 于 2007-4-7 15:26 发表

刚试了一下,不会呀!
你说的隐患到底是指什么呢?

文件里有0x00的字符

论坛徽章:
0
36 [报告]
发表于 2007-04-07 15:28 |只看该作者
就是查找第N次'\n'的出现位置,具体使用哪个库函数我不好说,对这个没有研究.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
37 [报告]
发表于 2007-04-07 15:31 |只看该作者
原帖由 soul_of_moon 于 2007-4-7 15:27 发表

文件里有0x00的字符

哦,这种文件就不应该用 fgets 来读取了吧?
NAME
       fgetc,  fgets,  getc,  getchar, gets, ungetc - input of characters and strings

论坛徽章:
0
38 [报告]
发表于 2007-04-07 15:34 |只看该作者
原帖由 flw 于 2007-4-7 15:31 发表

哦,这种文件就不应该用 fgets 来读取了吧?

这个就不一定了。像你如果要分析log文件,很有可能在log文件的某个地方存了个0x00

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
39 [报告]
发表于 2007-04-07 15:39 |只看该作者
原帖由 soul_of_moon 于 2007-4-7 15:34 发表

这个就不一定了。像你如果要分析log文件,很有可能在log文件的某个地方存了个0x00

那是写 log 的人的问题
呵呵,有点强词夺理了。
其实我的意思是说,我写程序很注重“语义”。用合适的函数去做合适的事。
像 fgets,就没法读取中间包含有 '\0' 的行——它不是 fread,它返回的只能是字符串,而不是 byte 流。
既然用了 fgets,那么你就不应该说后续的 strlen 有问题了。

论坛徽章:
0
40 [报告]
发表于 2007-04-07 15:44 |只看该作者
原帖由 flw 于 2007-4-7 15:39 发表

那是些 log 的人的问题
呵呵,有点强词夺理了。
其实我的意思是说,我写程序很注重“语义”。用合适的函数去做合适的事。
像 fgets,就没法读取中间包含有 '\0' 的行——它不是 fread,它返回的只能是字 ...

我只是举个例子。
因为以前写过一个测试程序,就因为文档改了,把'0'->NULL,结果导致我的测试程序老是down
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP