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

2024-11-27 19:38:05
推荐回答(4个)
回答1:

函数名: fseek
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值: 成功,返回0,否则返回其他值。

回答2:

你想要的是让光标直接移动到某一行的起始位置,
前面几行用fgets();读过,但不接收不就行了
----------------------------------------------------------
呵呵,我也想知道更简单的方法,希望有高手来回答...

回答3:

C标准库里面没有相关函数,我实现了一个,看能否帮上点忙:

#include

#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;
}

回答4:

可以 使用fseek函数

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

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

然后你要定位就直接运算一下就可以了