我目前正在从偏移位置(文件的四分之一)读取文件行直到结束:
struct stat st;
stat("file.txt", &st);
int fileSize = st.st_size
int minOffset = fileSize/4;
FILE* file_ptr = fopen("file.txt", "r");
fseek(file_ptr, minOffset, SEEK_SET);
int lineLength = 1000;
char * line;
line = malloc(lineLength);
while (read = getline(&line, &lineLength, file_ptr) != -1) {
printf("%s", line);
}
但我需要的是文件中的 read all lines between two bytes position . 正如奥拉夫在评论中所说, I also have the issue that my offset is not necesseraly at line boundary.
例如,这可能是我想要阅读的maxOffset:
int maxOffset = fileSize / 2;
I want to read from the line where the minOffset position is to the line before the maxOffset position.
该文件由单词(逐行)组成,其长度始终小于1000:
AA
AAS
ABACA
ABACAS
ABACOST
ABACOSTS
ABACULE
ABACULES
ABAISSA
ABAISSABLE
ABAISSABLES
ABAISSAI
ABAISSAIENT
ABAISSAIS
ABAISSAIT
ABAISSAMES
ABAISSANT
ABAISSANTE
ABAISSANTES
ABAISSANTS
ABAISSAS
ABAISSASSE
ABAISSASSENT
ABAISSASSES
ABAISSASSIEZ
ABAISSASSIONS
ABAISSAT
ABAISSATES
....
如何在两个字节位置之间读取文件行?
2 回答
首先,您需要在1 / 4,1 / 2和3/4点找到线起点的字节位置 . 要做到这一点:
fseek
到大致位置(例如fseek(filesize/4)
)调用
fgets
以读取下一个换行符调用
ftell
来确定偏移量返回的偏移量是一个季度的结束和下一个季度的开始 .
阅读文件的四分之一:
fseek
到本季度开始调用
fgets
来读取一行致电
ftell
,看看你是否已经到了季度末你想要函数fread: