esp8266readStringUntil('#')函数读取到了一个字符串,此字符串由字符串逗号字符串逗号组成,现在想通过逗号分隔此字符串,并且将分隔后的字符串放进一个字符串数组里,注意这里需要使用一个函数,通过函数传递参数的方式实现,请问该怎么实现,请给出思路和具体代码
时间: 2023-06-26 17:03:36 浏览: 132
可以使用 strtok 函数实现字符串分割,并将分割后的字符串存储在一个字符串数组中。具体实现思路如下:
1. 定义一个字符串数组,用于存储分割后的字符串;
2. 使用 strtok 函数分割读取到的字符串,并将分割后的字符串存储到字符串数组中;
3. 循环遍历字符串数组,输出每个分割后的字符串。
以下是具体的代码实现:
```C++
void splitString(String inputString, char delimiter, String* outputArray, int outputSize) {
int index = 0;
char* token = strtok((char*)inputString.c_str(), &delimiter);
while (token != NULL && index < outputSize) {
outputArray[index++] = String(token);
token = strtok(NULL, &delimiter);
}
}
void setup() {
Serial.begin(9600);
while (!Serial) {}
String inputString = Serial.readStringUntil('#');
Serial.println("Input string: " + inputString);
const int outputSize = 10;
String outputArray[outputSize];
splitString(inputString, ',', outputArray, outputSize);
for (int i = 0; i < outputSize; i++) {
if (!outputArray[i].isEmpty()) {
Serial.println("Output string #" + String(i) + ": " + outputArray[i]);
}
}
}
void loop() {
}
```
在上述代码中,splitString 函数使用了 strtok 函数进行字符串分割,并将分割后的字符串存储到传入的字符串数组中。同时,该函数还接受一个整数参数 outputSize,用于指定输出字符串数组的大小,以避免数组越界。在 setup 函数中,我们首先使用 Serial.readStringUntil('#') 函数读取串口传输的字符串,然后调用 splitString 函数进行分割并输出分割后的字符串。
阅读全文