从C中的字符串中提取数字

时间:2018-05-02 05:41:23

标签: c string

我有来自UART的ASCII字符串,看起来像" 43.533a,5532"而且我想提取这两个数字。我的想法是使用strtok和逗号作为分隔符分隔它们,然后从第一个字符串中删除最后一个字符,然后使用atoi()转换数字,或者使用sscanf()有更简单的方法吗?字符串操作不是我经常使用的。 另一个问题是,如果字符串看起来不同,我怎么能事先捕获它?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame([[1, 3.00]], columns=['At_Bat', 'Stand']) plt.ion() x = np.arange(0, 999, 0.1) y1 = -5 y2 = .75 y3 = 2.25 y4 = 5 plt.fill_between(x, y1, y2, color='lawngreen', alpha='.6') plt.fill_between(x, y2, y3, color='yellow', alpha='.6') plt.fill_between(x, y3, y4, color='red', alpha='.6') plt.scatter(df.At_Bat, df.Stand) plt.plot(df.At_Bat, df.Stand) plt.axhline(y=0, color='black') plt.xticks(np.arange(0, df.Stand.max() + 1)) plt.ylim([-4, 4]) plt.xlim([0, df.Stand.max() + 1]) df2 = pd.DataFrame([[2, 2.50]]) df = np.append(df, df2, axis = 0) 轻松完成此操作。

以下是一个例子。见working here

sscanf()

<强>输出

#include <stdio.h>

int main(void) {
    float a;
    int b;
    char *sNum = "43.533a,5532";

    sscanf(sNum, "%fa,%d", &a, &b);
    printf("a= %f || b= %d", a,b);

    return 0;
}

注意:由于默认情况下float的精确度为a= 43.533001 || b= 5532 小数位,因此您可能需要考虑并在必要时进行更正。