在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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |