能否在C语言中, 读取文件, 直接将文件内部指针 (也就是光标)移动到特定行数 (某一特定行)?
但是fseek的移动看的是字节数要是在不知道每一行有多少个字节的情况下可以使用吗?我想要的是让光标直接移动到某一行的起始位置,也就是在某一个'\n'之后。所谓直接,也就是...
但是fseek的移动看的是字节数 要是在不知道每一行有多少个字节的情况下可以使用吗?
我想要的是让光标直接移动到某一行的起始位置, 也就是在某一个'\n'之后。 所谓直接, 也就是不对char进行搜索 直接移动光标到特定行。
再补充下: 首先,在这之所以想要让光标直接移动到某一特定行, 是为了提高运算速度。 按照楼下3楼的方法, 是可以将光标移动, 但是仍然扫过了之前几行的所有char。 并没有提高速度。
再次, 该文本文档每行的长度都是不限的 有可能是0, 也有可能是无限长
总之, 是想要提高对文本文档的搜索速度 操作速度。。 (我的专业术语不是太好 请见谅) 展开
我想要的是让光标直接移动到某一行的起始位置, 也就是在某一个'\n'之后。 所谓直接, 也就是不对char进行搜索 直接移动光标到特定行。
再补充下: 首先,在这之所以想要让光标直接移动到某一特定行, 是为了提高运算速度。 按照楼下3楼的方法, 是可以将光标移动, 但是仍然扫过了之前几行的所有char。 并没有提高速度。
再次, 该文本文档每行的长度都是不限的 有可能是0, 也有可能是无限长
总之, 是想要提高对文本文档的搜索速度 操作速度。。 (我的专业术语不是太好 请见谅) 展开
展开全部
你想要的是让光标直接移动到某一行的起始位置,
前面几行用fgets();读过,但不接收不就行了
----------------------------------------------------------
呵呵,我也想知道更简单的方法,希望有高手来回答...
前面几行用fgets();读过,但不接收不就行了
----------------------------------------------------------
呵呵,我也想知道更简单的方法,希望有高手来回答...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以 使用fseek函数
具体使用请见:http://baike.baidu.com/view/656696.htm?fr=ala0_1
你可以在文件开始的地方保存你的文件内容信息,及每一行多少字节
然后你要定位就直接运算一下就可以了
具体使用请见:http://baike.baidu.com/view/656696.htm?fr=ala0_1
你可以在文件开始的地方保存你的文件内容信息,及每一行多少字节
然后你要定位就直接运算一下就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询