我面临着在 ANSI C 中提取格式为“blah.bleh.bloh”的字符串中的信息的需求。通常情况下,我会使用strok()来完成此操作,但是由于我正在通过strtok获取此字符串,并且strtok不是线程安全的,因此我无法使用此选项。
我已经编写了一个手动解析字符串的功能。以下是代码片段:
for(charIndex=0; charIndex < (char)strlen(theString); charIndex++)
{
if(theString[charIndex] == . )
{
theString[charIndex] = ;
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
我为什么不能像这样移动指针?我的方法有缺陷吗?也许有人有更好的方法来解析这个字符串。
编辑:针对评论,theString声明如下:
char theString[1024] = {0};
而且,我保证字符串永远不会超过1024个字符。