gpt4 book ai didi

c++ - 如何在 Arduino 中将一个字符串拆分为另一个字符串?

转载 作者:行者123 更新时间:2023-11-30 02:16:29 31 4
gpt4 key购买 nike

我有一个如下所示的字符数组:

char array[] = "AAAA... A1... 3. B1.";

如何在 Arduino 中用字符串 "..." 拆分这个数组?我试过:

ptr = strtok(array, "...");

输出如下:

AAAA,
A1,
3,
B1

但我实际上希望输出是

AAAA,
A1,
3.B1.

如何得到这个输出?

编辑:

我的完整代码是这样的:

char array[] = "AAAA... A1... 3. B1.";
char *strings[10];
char *ptr = NULL;`enter code here`

void setup()
{
Serial.begin(9600);

byte index = 0;
ptr = strtok(array, "..."); // takes a list of delimiters
while(ptr != NULL)
{
strings[index] = ptr;
index++;
ptr = strtok(NULL, "..."); // takes a list of delimiters
}

for(int n = 0; n < index; n++)
{
Serial.println(strings[n]);
}
}

最佳答案

主要问题是 strtok 在另一个字符串中找到一个字符串。 strtok 在字符串中查找字符。当您向 strtok 提供多个字符时,它会查找其中的任何。因此,编写 strtok(array, "..."); 与编写 strtok(array, "."); 完全相同。这就是为什么在“3”之后会出现 split 。

有多种方法可以做你想做的事。下面我将向您展示一个使用 strstr 的示例。与 strtok 不同,strstr 函数会在字符串中查找子字符串 - 正是您要查找的内容。但是.. strstr 不是分词器,因此需要一些额外的代码来打印子字符串。

应该这样做:

int main()
{
char array[] = "AAAA... A1... 3. B1...";

char* ps = array;
char* pf = strstr(ps, "..."); // Find first substring
while(pf)
{
int len = pf - ps; // Number of chars to print
printf("%.*s\n", len, ps);
ps = pf + 3;
pf = strstr(ps, "..."); // Find next substring
}
return 0;
}

关于c++ - 如何在 Arduino 中将一个字符串拆分为另一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823307/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com