Ответ 1
Так как strtok фактически записывает в вашу строку, вам нужно сделать его доступной для записи копию tokenize;
char* copy = strdup(myReadonlyString);
...tokenize copy...
free(copy);
У меня есть переменная const char *, которая может иметь значение типа OpenStack: OpenStack1. Я хочу tokenize this const char *, используя strtok, где разделитель (который имеет тип const char *) - ":". Но проблема strtok имеет следующий тип: char * strtok (char * str, const char * разделители);
Это означает, что я не могу использовать const char * для первого ввода, поскольку он должен быть char *. Не могли бы вы сказать мне, как я могу преобразовать этот const char * в char *?
Спасибо.
Так как strtok фактически записывает в вашу строку, вам нужно сделать его доступной для записи копию tokenize;
char* copy = strdup(myReadonlyString);
...tokenize copy...
free(copy);
Объявите его как массив:
char tokenedStr[] = "OpenStack:OpenStack1";
если это невозможно, скопируйте его в массив char.
Вы можете сделать копию своей немодифицируемой строки, а затем использовать strtok
.
Можно скопировать строки malloc
и strcpy
, чтобы скопировать строку.