Разделение строки по разделителям
- Войдите на сайт для отправки комментариев
Втр, 21/06/2022 - 17:03
Есть строка на подобии этого: 20|15|20@10|20|30@10|10|10
Я хочу разделить сначала строки по разделителю @, а затем по |, но по @ у меня получается, а по | нет
Ругается на строку (error: initializer fails to determine size of 'sz2' и error: array must be initialized with a brace-enclosed initializer). Перепробовал по разному исправить проблему
char sz2[] = str;
char *str;
char sz[] = "10|20|30@13|25|25@17|19|19";
char *p = sz;
while ((str = strtok_r(p, "@", &p)) != NULL)
{
Serial.println(str);
char *str2;
char sz2[] = str;
char *p2 = sz2;
while ((str2 = strtok_r(p2, "|", &p2)) != NULL)
{
Serial.println(str2);
}
Serial.println("====");
}
Попробовал так:
char *str; char sz[] = "10|20|30@13|25|25@17|19|19"; char *p = sz; while ((str = strtok_r(p, "@", &p)) != NULL) { Serial.println(str); char *str2; char sz2[] = {}; for(int i = 0; i < 8; i++) sz2[i] = *(str+i); char *p2 = sz2; while ((str2 = strtok_r(p2, "|", &p2)) != NULL) { Serial.println(str2); } Serial.println("===="); }Но выводит так:
Всё, получилось решить
Может кому-то пригодится:
char *str; char sz[] = "10|20|30@13|25|25@17|19|19"; char *p = sz; while ((str = strtok_r(p, "@", &p)) != NULL) { Serial.println(str); char *str2; char *p2 = str; while ((str2 = strtok_r(p2, "|", &p2)) != NULL) { Serial.println(str2); } Serial.println("===="); }Надеюсь, Вы знаете, что strtok гадит в строку?
заметил что когда строку из массива прогоняю с strtok второй раз, то в массиве из "10|20|30" остается только "10". Вы про это?
Да
Понял, спасибо