我有這個由幾個分隔符之一分割字符串?
A > B
,或A < B
,或A==B
,
使用strtok
我會破壞數據,我的目標是獲得某種結構的,我可以檢查:
- 我有什麼樣的分隔符
- 可以訪問它的兩邊(A和B)。
這樣:
if (>)
do something with A and B
else if (==)
do something with A and B
我知道這聽起來很簡單,但它總是很麻煩。
編輯:
我所做的就是這一點,似乎太長了任務:
for (int k=1;k<strlen(p);k++)
{
char left[4]="" ;
char right[12]="" ;
switch(p[k])
{
case '>' :
{
long num =strstr(p,">") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);
break;
}
case '<' :
{
long num =strstr(p,"<") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);
break;
}
case '=' :
{
long num =strstr(p,"=") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);
break;
}
case '!' :
{
long num =strstr(p,"!") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);
break;
}
default :
{}
}
}
爲什麼不用strtok? – mik1904
@ mik1904它不會使用「==」,它不是一個字符。 – Curnelious
由於可能有也可能沒有空白分隔符(或者看起來像),僅*指針*是不夠的。您需要一個'result'結構體,其中至少包含一個指向每個標記開頭及其長度的指針,或者,也可以將每個標記複製到一個新字符串中。代碼可以非常簡單;到目前爲止,你有什麼? – usr2564301