0

Zigbee を使用して Keil C51 で書いています。

Serial_txString0("AT+UCAST:000D6F0000BB769D=StartGreen");        
tx_port0(0x0D);

たとえば、「AT+UCAST:000D6f0000BB769D=StartGreen」を受け取ります。これをフィルタリングして、「StartGreen」のみを取得したいと考えています。

4

2 に答える 2

4

どうですか:

char *eq = strrchr(str, '=');
if (eq)
    printf("%s\n", eq + 1);
于 2012-05-14T07:12:03.353 に答える
0

一例として、何をフィルタリングしたいかによって、実際にはわかりません。このようなもので十分ですか(後の文字列の部分を抽出します=)?

char* filter(char* input) {
   int i = 0;
   while (input[i] && input[i] != '=') i++;

   return &input[i + 1];
}

これは文字列をコピーせず、文字列の右側を参照するだけであることに注意してください。フィルタリングされた部分を実際に抽出したい場合...

void filter(char* input, char* output) {
   int i = 0;
   while (input[i] && input[i] != '=') i++;

   strcpy(output, &input[i + 1]);
}

...で使用strcpy<string.h>ます。

于 2012-05-14T07:14:07.547 に答える