[英]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.