假设我有一个按以下方式排列的数据集
19 10 1 1
12 15 1 1
13 12 4 5
10 5 2 3
...
等等,在for循环的特定迭代中,我必须只读取第1行和第4行,并且在下一次迭代中我必须访问其他一些行,例如
1st iteration:
1st row: 19 10 1 1
4th row: 10 5 2 3
我将使用fscanf()函数访问我的数据。但是,在给定的迭代中,我将如何确保仅选择第1行或第4行或任何两行?
(我没有考虑将其读入2D数组,因为数据集的大小是10 ^ 8)
谢谢。
答案 0 :(得分:3)
在读取数据时(例如,存储在标准文件中),通过查找行分隔符(换行符)获取行的字节偏移量。然后,您可以在FILE *
和fseek()
上使用C指针算法基于开始和结束字节偏移读出行。存储几个字节的偏移量(通常为8个字节long
或等效物)很便宜。