加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中解析字符串时出错“左操作数必须是l值”

发布时间:2020-12-16 10:38:15 所属栏目:百科 来源:网络整理
导读:我需要在ANSI C中以“blah.bleh.bloh”格式的字符串中提取信息.通常我会使用strok()来完成此操作,但是因为我通过strtok获取此字符串,并且strtok不是线程安全的,我不能使用这个选项. 我编写了一个手动解析字符串的函数.这是一个snippit: for(charIndex=0; ch
我需要在ANSI C中以“blah.bleh.bloh”格式的字符串中提取信息.通常我会使用strok()来完成此操作,但是因为我通过strtok获取此字符串,并且strtok不是线程安全的,我不能使用这个选项.

我编写了一个手动解析字符串的函数.这是一个snippit:

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++;
}

如你所见,我试图找到第一次出现’.’并记下角色的索引.然后我转换’.’到一个null char并将第一个字符串复制到一个数组.

然后我想将指针更改为刚刚找到分隔符后的开始,基本上给了我一个新的更短的字符串.

不幸的是我收到错误:

theString = &theString[charIndex + 1];

错误是:

error C2106: '=' : left operand must be l-value

为什么我不允许像这样移动指针?我的方法有缺陷吗?也许有人有更好的想法来解析这个字符串.

编辑:在回应评论时,theString的声明是:

char theString[1024] = {0};

此外,我保证theString永远不会超过1024个字符.

解决方法

假设您将theString定义为数组,请尝试将其定义为指针.将char变量声明为数组时,以后不能更改其地址.

我假设你有一个类似的声明

char theString[100];

最简单的解决方案是单独保留该声明,并添加另一个:

char *str = theString;

然后在当前使用theString的地方使用str.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读