C语言 char array中的某一部分提取成一个int

大家好!我是C语言编程的新手,我想实现chararray中的某一部分提取成一个intx;譬如说:uread[250]="DEVICE_7_30";这一个chararray... 大家好!我是C语言编程的新手,我想实现 char array中的某一部分提取成一个int x;
譬如说: uread[250]="DEVICE_7_30"; 这一个char array中,uread[0]='D'; uread[1]='E'....以此类推,则uread[9]='3'; uread[10]='0', 要怎样写 才能把这两个uread[9] uread[10]合在一起, 生成一个int x = 30;?
可以实现吗? 谢谢in advance!
展开
 我来答
烈鹰之翼
2014-06-06 · TA获得超过155个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:100万
展开全部

如果格式是固定的,可以使用sscanf函数


#include <stdio.h>
using namespace std;
int main(){
char a[]="device_7_30";
int m,n;
sscanf(a,"device_%d_%d",&m,&n);
printf("%d %d",m,n);
return 0;
}
更多追问追答
追问
谢谢你的回答 这样是只是提取m,n吗?有把它合并成一个吗int x吗?不太明白这一句sscanf(a,"device_%d_%d",&m,&n);
追答
这样可以吧7和30都提取出来啊,它是格式化输入,只是变成从字符串输入而已。a代表字符串数组,“device_%d_%d”相当于scanf中的格式化输入,就是找符合这样格式的字符串,然后提取其中两个位置的整数,这里就是把device_忽略了,然后7符合%d的格式,放入m中,在忽略_字符,30符合%d,放入n,如果你只要30,那就是“device_7_%d”
qscorpius_fly
2014-06-06 · TA获得超过1858个赞
知道小有建树答主
回答量:811
采纳率:80%
帮助的人:312万
展开全部
将(uread[9]-'0')*10+(uread[10]-'0')赋给x就可以了
追问
谢谢你的回答!可以帮我解释一下这句(uread[9]-'0')*10+(uread[10]-'0')
是什么意思吗? 还有因为我uread[250] 里面的东西是从串口里面读的东西,所以是会变的, 那如果第二次变成 uread[250]="DEVICE_7_70" 还可以用这一句赋值x 提取70吗?
追答
可以,只要第9位和第10位是数字就可以
uread[9]-'0'就是将uread[9]的数字字符转换成对应的数字,比如7,同理uread[10]-'0'就是将第10位的字符转换成对应的数字,比如0
(uread[9]-'0')*10+(uread[10]-'0')=7*10+0=70
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式