Идентифицировать числа в смешанных форматах в строке в C - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующая строка:

 char *line; 
 char temp_line;

После некоторой обработки мой указатель line, указывающий на temp_line, содержит следующую строку:

 "H2 + CH = CO2      4.00e-003     3.00e10     43.00"

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

Как лучше всего добиться этого в C?

Есть ли способ позволить C прочитать строку в обратном порядке и дать ей указание извлечь последние три цифры этой строки?

1 Ответ

1 голос
/ 25 марта 2020

Есть ли способ позволить C прочитать строку в обратном порядке и дать ей указание извлечь последние три цифры этой строки?

Конечно, проанализировать строку и сохранить последнюю 3 успешных преобразования.
Приведенное ниже потребляет s.

// Return parse count;
int read_last_3_double(char *s, double y[3]) {
  const char *delimiters = " \n\t";
  int i = 0;
  char *token = strtok(s, delimiters);
  while (token) {
    char *endptr;
    double x = strtod(token, &endptr);
    // If no conversion or fails to end with a null character. 
    if (token == endptr || *endptr) {
      // No conversion
      i = 0;
    } else {
      if (i == 3) {
        y[0] = y[1];
        y[1] = y[2];
        y[2] = x;
      } else {
        y[i++] = x;
      }
    }
    token = strtok(NULL, delimiters);
  } // endwhile
  return i;
}
...