求助,怎么把[100, 254][1001, 2542]这样字符串中的数字提取出来变成整形数字?

微风nia 2018-07-13 08:26:16
怎么把[100, 254][1001, 2542]一串这样字符串中的数字提取出来变成整形数字?
...全文
169 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
@风轻云淡_ 2018-07-14
  • 打赏
  • 举报
回复
首先 if ((*str > '0') || (*str < '9')) 这里加不加等于号我不清楚,但是根据你的注释来看 ,“||”应该改成 “&&” 然后你说的下一个问题,既然实现了单个,你把这整套方法加到循环里,多次执行不就能识别出多个来了吗。你这个函数里整体是顺序执行的,局部循环只是为了找出方括号里的数字字符,肯定不能实现多个类似格式数据的查找。
真相重于对错 2018-07-13
  • 打赏
  • 举报
回复
int x, y;
char* str = "[100,10]";
int ret = sscanf(str, "[%d,%d]", &x, &y);
微风nia 2018-07-13
  • 打赏
  • 举报
回复
这是我自己写的,有点问题,单个[100,100]的时候可以,多个的时候不行,能否指点一下
微风nia 2018-07-13
  • 打赏
  • 举报
回复
void str2int1(char *str)
{
len_point = 0; //[10,500][20,300]
mid_point = 0;

if (*str == '[' ) //如果第一个字符是 [
{ //则移到下一个字符
str++;

}
while(*str != 0 )
{
if ( (*str == ',') ) //如果当前字符是 ,
{ //则退出循环
break;
}
if ((*str > '0') || (*str < '9')) //如果当前字符是数字
{
//mid_point = mid_point * 10 + (*str - '0'); //如果当前字符是数字则计算数值
mid_point = mid_point * 10 + (*str) - '0';
str++; //移到下一个字符
}
}

if (*str == ',' ) //如果第一个字符是 ,
{ //则移到下一个字符
str=str+2;
}
while(*str != 0 )
{
if ( (*str == ']') ) //如果当前字符是 ]
{ //则退出循环
break;
}
if ((*str >'0') || (*str < '9')) //如果当前字符是数字
{
//len_point = len_point * 10 + (*str - '0'); //如果当前字符是数字则计算数值
mid_point = mid_point * 10 + (*str) - '0';
str++; //移到下一个字符
}
}

}
zhouqunhai 2018-07-13
  • 打赏
  • 举报
回复
识别数字前后的字符,当做判断条件

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧