Я столкнулся с необходимостью извлечения информации в строке формата «blah.bleh.bloh» в ANSI C. Обычно я бы использовал strok () для достижения этой цели, но, поскольку я получаю эту строку через strtok, и strtok не является потокобезопасным, я не могу использовать эту опцию.
Я написал функцию для ручного анализа строки. Вот фрагмент:
for(charIndex=0; charIndex < (char)strlen(theString); charIndex++)
{
if(theString[charIndex] == '.')
{
theString[charIndex] = '\0';
osi_string_copy_n(Info[currentInfoIndex], 1024, theString, charIndex + 1 );
currentInfoIndex++;
theString = &theString[charIndex + 1];
}
charIndex++;
}
Как видите, я пытаюсь найти первое вхождение '.' и запишите индекс персонажа. Затем я конвертирую '.' к нулевому символу и скопируйте первую строку в массив.
Затем я хочу изменить указатель на запуск сразу после того, как был найден разделитель, что, по сути, дает мне новую более короткую строку.
К сожалению, я получаю сообщение об ошибке:
theString = &theString[charIndex + 1];
Ошибка:
error C2106: '=' : left operand must be l-value
Почему мне не разрешено перемещать указатель вот так? Мой метод несовершенен? Возможно, у меня есть идея лучше разобрать эту строку.
РЕДАКТИРОВАТЬ: В ответ на комментарии, объявление для строки является:
char theString[1024] = {0};
Кроме того, я гарантирую, что длина строки никогда не будет превышать 1024 символов.