我必须打开并读取带有sensorvalues的.dat文件。每行都有一个我必须读取的新值,例如:
timestamp, value
000000001, 1.233
000000002, 1.345
...
我必须编写一个函数,每次我将其称为新的sensorvalue时都返回。
我知道如何读取整个文件,但我不知道如何实现诸如线指针(谁告诉我接下来要读取哪一行)之类的东西。
时间戳记不是常规的,所以我认为我不能使用它们来获取最新的值。
希望您理解我的问题并能帮助我,谢谢!
最佳答案
如果仅在需要读取行时文件是只读的,则无需执行其他任何操作。只需编写一个读取行并为您提供所需数据的函数。下次需要获取一些传感器数据时,只需再次调用该函数,FILE
的内部操作便会完成,因为它会记住它在哪里。
sensor_data read_data(FILE * fp) {
...
fgets(..., ..., fp);
/* test */
/* parse line */
return sensor_data;
}
如果确实由于其他原因需要遍历文件,并且想要获取与下一个对应的行,则可以使用
ftell()
和fseek()
保存文件指针的位置,或者(如果知道哪个行),只需fseek(fp, LINE_LENGTH * n, SEEK_SET)
。sensor_data read_data(FILE * fp, long n) {
...
fseek(fp, n * LINE_LENGTH, SEEK_SET);
fgets(..., ..., fp);
/* test */
/* parse line */
return sensor_data;
}
关于c - 从文件中逐行读取c中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51124518/