我已声明char数组char BCommand[100]="00LI002LE99"
,我只想使用002
和99
。
这是我尝试过的代码:
char Lcommand[3],Lecommand[3];
unsigned char SlaveNodeID=0,NodeValue=0,ChSum2=0;
Lcommand[0]=BCommand[4];
Lcommand[1]=BCommand[5];
Lcommand[2]=BCommand[6];
Lecommand[0]=BCommand[9];
Lecommand[1]=BCommand[10];
SlaveNodeID = atoi(Lcommand);
NodeValue = atoi(Lecommand);
有没有有效的方法来做到这一点?
答案 0 :(得分:1)
我认为您需要int
个值,如果您想要002
和99
的整数值,可以使用此值。
int SlaveNodeID = (BCommand[4] - '0') * 100 + (BCommand[5]-'0') * 10 + (BCommand[6] - '0');
int NodeValue = (BCommand[5] - '0') * 10 + (BCommand[6]-'0');
printf("%3d",SlaveNodeID);
printf("%2d",NodeValue);
如果你想让它们成为字符串,那么声明大小为4和3的字符数组。使用sprintf()
或snprintf()
而不是printf()
答案 1 :(得分:0)
您可以使用string.h [1]库来操作字符数组。
在那里,你可以找到像strncpy [2]这样的函数,所以你的代码就像这样:
char Lcommand[3],Lecommand[3];
unsigned char SlaveNodeID=0,NodeValue=0,ChSum2=0;
strncpy(Lcommand, Bcommand+2, 3);
strcpy(Lecommand, Bcommand+7, 3);
SlaveNodeID = atoi(Lcommand);
NodeValue = atoi(Lecommand);
另外,我建议您查看string.h中的其他函数,因为它们可能会对您有所帮助。
[1] - http://www.cplusplus.com/reference/cstring/?kw=string.h