繁体   English   中英

在 C 中的字符串中识别混合格式的数字

[英]Identify numbers in mixed formats within a string in C

我有以下字符串:

 char *line; 
 char temp_line;

经过一些处理,我指向temp_line指针line包含以下字符串:

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

我需要一个程序来识别你看到的三个数字。 我总是可以假设会有三个不同的数字。 我不能假设所有三个数字都是以指数形式给出的。

在 C 中实现这一目标的最佳方法是什么?

有没有办法让 C 反向读取该行,并指示它提取该行的最后三个数字?

有没有办法让 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM