char *到number的值

时间:2013-04-25 18:03:40

标签: c++ arduino

我有以下代码:

char msg[10];
int len = acc.read(msg, sizeof(msg), 1); // This will read "R#" where # can be any number.
int number = getNumber(msg);

函数getNumber如下所示:

int getNumber(char* pMsg){
  Serial.println(positionMsg);
  positionMsg += 1;
  Serial.print('[');
  Serial.print(positionMsg);
  Serial.println(']');
}

此功能打印出来:

R115
[115]

当邮件中的号码为115时。如何返回整数115

我来自Java背景,我不明白指针。

2 个答案:

答案 0 :(得分:4)

最简单的方法是使用atoi: http://www.cplusplus.com/reference/cstdlib/atoi/

#include <cstdlib>  
int getNumber(char* pMsg){
    //assuming format is always R#
    return std::atoi((char*)(pMsg+1));
}

或者,您可以直接使用atoi而不是getNumber ...

答案 1 :(得分:2)

函数指定int的返回类型,因此我们必须返回一个整数。 使用sscanf()可以在一个函数调用中解析/格式化其他数据类型。

在C ++中:使用sscanf()

    /* sscanf example */
    #include <cstdlib>

    int getNumber(char* pMsg){
        int result;
        ...
        sscanf (pMsg,"R%d",&result);  
        return result;
    }