我有以下代码:
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背景,我不明白指针。
答案 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;
}