您不必将命令分成单独的char
数组 - 您只需在收到的字符数组中将 s 替换为 s,并保存字符串中“中断”的位置#
。\0
这是一个插图:
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12
--- --- --- --- --- --- --- --- --- --- --- --- ---
Char: '1' '0' '0' '#' '2' '0' '0' '#' '3' '0' '0' '#' \0
将其替换为
Index: 0 1 2 3 4 5 6 7 8 9 10 11 12
--- --- --- --- --- --- --- --- --- --- --- --- ---
Char: '1' '0' '0' \0 '2' '0' '0' \0 '3' '0' '0' \0 \0
并将指向 、 和 的指针存储&str[0]
为&str[4]
指向&str[8]
您的各个命令的指针。
char[] str = "100#200#300#";
char *p1 = str;
char *p2 = strchr(p1, '#');
// Replace the first '#'
*p2++ = '\0';
// Replace the second '#'
char *p3 = strchr(p2, '#');
*p3++ = '\0';
// Replace the third '#'
*strchr(p3, '#') = '\0';
printf("One='%s' Two='%s' Three='%s'\n", p1, p2, p3);
这只是一个演示:在生产代码中,您需要strchr
在进行分配之前检查返回值。