24小时热门版块排行榜    

查看: 322  |  回复: 4
当前主题已经存档。

limin881

[交流] 【求助】C语言,文件操作fseek;

请问各位大侠,我在一个txt文件里存放了如下内容:
1  2  3  4  5  6  7
11  12  13  14  15  16  17
111  112  113  114  115  116  117
我想用fseek接和fscanf,把文件指针移动到第三行第四列的位置然后用fscanf读出指定位置的数据。
可是结果,指定位置老是不在我想要地方。请求帮助。急用,谢谢!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚


bslt(金币+1,VIP+0)::)增加些金币,欢迎常过来探讨! 2-14 21:12
文本文件虽然对人来说可读,可是对程序来说还是很麻烦的。
例如,回车符、换行符,这些人看不见的东西,都要考虑到。

处理文本文件,最好的组合拳,是fgets 和 sscanf

fgets 从文件中读一行,放到一个字符串里。
sscanf 再从这个字符串里按格式读取各个数据项。
注意:sscanf里的参数是要地址的咯。
2楼2009-02-14 11:33:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limin881

先谢过,可是我想要的是,定位到一定位置,我给的那个TXT只是一个例子,真正要读写的txt是203行135列,而且要移动的位置就更多了啊。还是想要一个顶到位置的指针。
3楼2009-02-14 13:31:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limin881

先谢过,可是我想要的是,定位到一定位置,我给的那个TXT只是一个例子,真正要读写的txt是203行135列,而且要移动的位置就更多了啊。还是想要一个顶到位置的指针。
4楼2009-02-14 13:33:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

不知道你到底为什么会有这个要求。
首先,Linux、MacOS和Windows的文本格式不同,
Windows下的文本中,两行之间有“换行”和“回车”两个字符,而Linux和MacOS只有一个。
其次,你打开文件时的mode,也就是"rt"、"rb"之类,也会影响读取和文件指针位置。
所以,千万不要在文本文件里玩fseek和ftell

你可以采取一些变通的办法,如生成中间文件,或者干脆,整个数据读到内存数组里。
5楼2009-02-16 23:39:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 limin881 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见