2

我已经声明了 char 数组char BCommand[100]="00LI002LE99",我只想使用002and 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);

有没有有效的方法来做到这一点?

4

2 回答 2

1

我认为你需要值,如果你想要 andint的整数值,你可以使用它。 00299

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()orsnprintf()代替printf()

于 2013-10-26T11:04:35.283 回答
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

[2] - http://www.cplusplus.com/reference/cstring/strncpy/

于 2013-10-26T11:06:45.823 回答