如何在C语言中从字符串中提取字符?

如何在C语言中从字符串中提取字符?,c,string,char,C,String,Char,我正在与GSM SIM900模块接口,该模块响应\r\n。我已将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(isd

我正在与GSM SIM900模块接口,该模块响应
\r\n
。我已将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");
  }
}
char var[15]=“\r\n hello:4”;
int i,l;
chark;

对于(i=0;i您可以使用
strtok()
atoi()
,如果您知道引用的部分不包含逗号。

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

  • 声明一个字符数组

  • 从起点开始循环

  • 使用isdigit()检查它是否为数字

  • 如果它是一个数字,那么将它添加到我们声明的数组中

  • 循环完成后,在数组末尾添加null字符,因为它是cstring

  • 使用atoi函数将其转换为整数


  • 我不确定这些函数是否在标准库中。但使用strtok函数会更容易实现。

    我不明白您所说的GSM或“它就是这样”是什么意思.实际字符串是什么?为什么不使用循环检查每个字符是否为数字?当字符为数字时,有一个函数返回1。您能告诉我您需要知道整数在哪里或如何查找吗it@Giorgi我需要提取整数
    strrchr(数据',')
    可用于查找最后一个逗号。嘿,感谢这个新的isdigit函数。它非常有用。我正在按照您的步骤获取输出,但当我将其转换为int时,它会给我带来分段错误。我已附加了我的代码。请看一看。当您访问错误的内存位置时,会出现分段错误。我猜这是错误的发生的原因是字符串的长度为9,但for语句循环运行了11次。