能否在C语言中, 读取文件, 直接将文件内部指针 (也就是光标)移动到特定行数 (某一特定行)?

但是fseek的移动看的是字节数要是在不知道每一行有多少个字节的情况下可以使用吗?我想要的是让光标直接移动到某一行的起始位置,也就是在某一个'\n'之后。所谓直接,也就是... 但是fseek的移动看的是字节数 要是在不知道每一行有多少个字节的情况下可以使用吗?
我想要的是让光标直接移动到某一行的起始位置, 也就是在某一个'\n'之后。 所谓直接, 也就是不对char进行搜索 直接移动光标到特定行。

再补充下: 首先,在这之所以想要让光标直接移动到某一特定行, 是为了提高运算速度。 按照楼下3楼的方法, 是可以将光标移动, 但是仍然扫过了之前几行的所有char。 并没有提高速度。
再次, 该文本文档每行的长度都是不限的 有可能是0, 也有可能是无限长

总之, 是想要提高对文本文档的搜索速度 操作速度。。 (我的专业术语不是太好 请见谅)
展开
 我来答
dalookzhu
推荐于2016-03-23 · TA获得超过276个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:283万
展开全部
函数名: fseek
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值: 成功,返回0,否则返回其他值。
云上他
2010-01-12 · TA获得超过3551个赞
知道小有建树答主
回答量:1499
采纳率:0%
帮助的人:784万
展开全部
你想要的是让光标直接移动到某一行的起始位置,
前面几行用fgets();读过,但不接收不就行了
----------------------------------------------------------
呵呵,我也想知道更简单的方法,希望有高手来回答...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9f268f3
2010-01-08 · TA获得超过477个赞
知道小有建树答主
回答量:167
采纳率:50%
帮助的人:106万
展开全部
C标准库里面没有相关函数,我实现了一个,看能否帮上点忙:

#include <stdio.h>

#define MAX_LENTH_OF_LINE 1024

int SetPositionByLine( FILE *stream, int nLine )
{
int i = 0;
char buffer[MAX_LENTH_OF_LINE + 1];
fpos_t pos;

rewind(stream);
for(; i < nLine; i ++ )
fgets( buffer, MAX_LENTH_OF_LINE, stream);
fgetpos(stream, &pos);
return 0 ;
}
int main( void )
{
char buffer[MAX_LENTH_OF_LINE + 1];
FILE *stream;
stream = fopen("D:\\a.txt", "w+");
fprintf( stream, "abcdefg\nhijklmn\nopqrst\nuvwxyz\n");

SetPositionByLine(stream, 3);
fgets( buffer, MAX_LENTH_OF_LINE, stream);
printf("%s\n", buffer );
fclose(stream);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6c72dcb
2010-01-09 · TA获得超过575个赞
知道小有建树答主
回答量:798
采纳率:0%
帮助的人:1003万
展开全部
可以 使用fseek函数

具体使用请见:http://baike.baidu.com/view/656696.htm?fr=ala0_1

你可以在文件开始的地方保存你的文件内容信息,及每一行多少字节

然后你要定位就直接运算一下就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式