1

我有以下代码:

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背景,我不懂指针。

4

2 回答 2

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...

于 2013-04-25T18:07:55.487 回答
2

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

在 C++ 中:使用 sscanf()

    /* sscanf example */
    #include <cstdlib>

    int getNumber(char* pMsg){
        int result;
        ...
        sscanf (pMsg,"R%d",&result);  
        return result;
    }
于 2013-04-25T18:16:18.507 回答