我正在与使用\r\n
回复的GSM SIM900模块连接。我已将GSM响应存储在一个数组中,需要从中提取字符。我正在检查docklight中的响应,它是这样的:
\r\n +CMTI: "SM",1 \r\n
我需要从上面提取最后一个整数1并将其存储在变量中。
这里\r\n
是回车和换行
我很困惑,\r
(回车)是否应被视为单一或双重字符。
代码:
char var[15] = "\r\nhello:4";
int i,l;
char k;
for(i=0;i<=10;i++)
{
if(isdigit(var[i]))
{
k = var[i];
/* l = atoi(k); */
l = atoi(&var[i]); /* Get number from string */
printf("output=%d",k);
printf("done");
}
else
{
printf("NO");
}
}
答案 0 :(得分:0)
如果您知道引用的部分不包含逗号,则可以使用strtok()
和atoi()
。
答案 1 :(得分:0)
两个条件使这个问题变得非常容易......位置是固定的,字符串只包含一个整数。有各种好的方法,但我认为这将是最简单的方法。
声明一个字符数组。
从起点开始循环。
使用isdigit()检查是否为数字。
如果是数字,则将其添加到我们声明的数组中。
循环结束后,在数组末尾添加空字符,因为它是一个cstring。
将其转换为带有atoi函数的整数。
我不确定这些功能是否在标准库中。但是使用strtok函数实现起来会更容易。