我正在使用Zigbee編寫Keil C51。如何過濾c中的數組?
Serial_txString0("AT+UCAST:000D6F0000BB769D=StartGreen");
tx_port0(0x0D);
例如,我會收到 「AT +尤卡斯特:000D6f0000BB769D = StartGreen」,我想篩選只得到 「StartGreen」。
我正在使用Zigbee編寫Keil C51。如何過濾c中的數組?
Serial_txString0("AT+UCAST:000D6F0000BB769D=StartGreen");
tx_port0(0x0D);
例如,我會收到 「AT +尤卡斯特: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];
}
請注意,這不會複製字符串,只能引用它的右邊部分。如果你想在<string.h>
實際提取過濾部分...
void filter(char* input, char* output) {
int i = 0;
while (input[i] && input[i] != '=') i++;
strcpy(output, &input[i + 1]);
}
...使用strcpy
。
我是新手整個事情都做了什麼? – JiaYuan
@JiaYuan查找最右邊的'='的指針並打印出來。 – cnicutar
@cnicutar @JiaYuan找到一個指向最右邊'='的指針,遞增一步(到'S'),然後打印它。 –