2

char 配列を宣言しました。and を使用しchar BCommand[100]="00LI002LE99"たいだけです。00299

これが私が試したコードです:

 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

値が必要だと思います。 とintの整数値が必要な場合は、これを使用できます。 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()orを使用します。snprintf()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 に答える