чтение значений из файла, строка за строкой в ​​c - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно открыть и прочитать .dat-файл со значениями датчика. У каждой строки есть новое значение, которое я должен прочитать, например:

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

Мне нужно написать функцию, которая будет возвращаться каждый раз, когда я называю это новым значением датчика. Я знаю, как читать целые файлы, но я не знаю, как реализовать что-то вроде указателя строки (который говорит мне, какую строку читать дальше) или что-то в этом роде. Временные метки НЕ являются регулярными, поэтому я думаю, что не могу использовать их, чтобы получить новейшее значение.

Надеюсь, вы понимаете мою проблему и можете мне помочь, спасибо!

1 Ответ

0 голосов
/ 01 июля 2018
  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;
    }
    
...