Zigbee を使用して Keil C51 で書いています。
Serial_txString0("AT+UCAST:000D6F0000BB769D=StartGreen");
tx_port0(0x0D);
たとえば、「AT+UCAST:000D6f0000BB769D=StartGreen」を受け取ります。これをフィルタリングして、「StartGreen」のみを取得したいと考えています。
どうですか:
char *eq = strrchr(str, '=');
if (eq)
printf("%s\n", eq + 1);
一例として、何をフィルタリングしたいかによって、実際にはわかりません。このようなもので十分ですか(後の文字列の部分を抽出します=
)?
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>
ます。