Игнорирование строк комментариев, помеченных "%", с использованием open () в C на Linux - PullRequest
0 голосов
/ 14 ноября 2010

Я пытаюсь прочитать файл, в котором первые две строки помечены знаком «%» в качестве первого символа.Мне нужно игнорировать эти две строки, а затем прочитать 4 отдельные целочисленные переменные, разделенные неизвестным количеством пробелов.Это затем повторяется для каждой строки до EOF.Я пытаюсь использовать open () из fcntl.h.

Есть ли способ начать чтение после 2 полных строк, а затем разделить 4 значения с пробелами между ними на 4 целочисленные переменные?

Это образец файла:

% Input file
% number    time           time2         priority
0           10              4             2
1            8              2             1
2           12              0             5
3            2              4             4

1 Ответ

1 голос
/ 14 ноября 2010

При выполнении ввода-вывода с использованием open () (не буферизуется библиотека, как fopen ()), вы хотите прочитать все данные в ОЗУ и затем обработать их.файл:

  char *ptr = data;
  while (*ptr) {
    char *end = strchr(ptr, '\n');
    if (!end) {
      end = ptr + strlen(ptr);
    }
    *end = 0;
    if (*ptr != '%') { /* a valid line */
      int a, b, c, d;
      if (4 != sscanf(ptr, " %d %d %d %d", &a, &b, &c, &d)) {
        error();
      }
      /* do something with the values */
    }
    ptr = end + 1;
  }
...