我面臨需要拉出ANSI C中格式爲「blah.bleh.bloh」的字符串中的信息。通常我會使用strok ()來完成這個任務,但由於我通過strtok得到了這個字符串,並且strtok不是線程安全的,所以我不能使用這個選項。錯誤解析C中的字符串「左操作數必須爲l值」
我寫了一個函數來手動解析字符串。這裏是一個snippit:
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
爲什麼我不能移動指針這樣的嗎?我的方法有缺陷嗎?也許有人有更好的想法來解析這個字符串。
編輯:在迴應的意見,爲theString的聲明是:
char theString[1024] = {0};
此外,我保證theString絕不會超過1024個字符。
讓我們知道`theString`是如何聲明的。 – 2009-01-28 23:53:00
您還應該查看一些其他字符串函數,如strspn和strcspn。 – MSN 2009-01-29 00:09:08
無關,但爲什麼「(char)strlen(theString)」?你是否希望這個函數不能處理超過128個字符的字符串? – 2009-01-29 00:30:17