如何从C中的字符串中提取字符?

时间:2015-07-28 13:31:22

标签: c string char

我正在与使用\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");
  }
}

2 个答案:

答案 0 :(得分:0)

如果您知道引用的部分不包含逗号,则可以使用strtok()atoi()

答案 1 :(得分:0)

两个条件使这个问题变得非常容易......位置是固定的,字符串只包含一个整数。有各种好的方法,但我认为这将是最简单的方法。

  1. 声明一个字符数组。

  2. 从起点开始循环。

  3. 使用isdigit()检查是否为数字。

  4. 如果是数字,则将其添加到我们声明的数组中。

  5. 循环结束后,在数组末尾添加空字符,因为它是一个cstring。

  6. 将其转换为带有atoi函数的整数。

  7. 我不确定这些功能是否在标准库中。但是使用strtok函数实现起来会更容易。