【问题标题】:reading values from file, line by line in c从文件中读取值,在c中逐行读取
【发布时间】:2018-07-01 15:12:22
【问题描述】:

我必须打开并读取带有传感器值的 .dat 文件。每行都有一个我必须阅读的新值,例如:

timestamp, value
000000001, 1.233
000000002, 1.345
...

我必须编写一个函数,每次调用它时都会返回一个新的传感器值。 我知道如何读取整个文件,但我不知道如何实现诸如 linepointer 之类的东西(谁告诉我接下来要读取哪一行)或类似的东西。 时间戳不是定期的,所以我想我不能用它们来获取最新的值。

希望你能理解我的问题并能帮助我,谢谢!

【问题讨论】:

  • fscanf() 会成为你的朋友吗?
  • 关于 SO 和其他地方的大量示例。
  • 到目前为止你有什么尝试?

标签: c scanf fopen fgets


【解决方案1】:
  1. 如果文件仅在您需要读取一行时才被读取,那么您无需执行任何额外操作。只需编写一个读取一行并为您提供所需数据的函数。下次您需要获取一些传感器数据时,只需再次调用该函数,FILE 的内部就会完成剩下的工作,因为它会记住它的位置。

    sensor_data read_data(FILE * fp) {
        ...
        fgets(..., ..., fp);
        /* test */
    
        /* parse line */
        return sensor_data;
    }
    
  2. 如果您出于其他原因确实需要在文件中移动并且想要获取与下一个对应的行,您可以使用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;
    }
    

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 2010-11-19
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多