char ch_return[256] = "1||3|4|";
char ch_other1[256] = {0};
char ch_other2[256] = {0};
char ch_other3[256] = {0};
char ch_other4[256] = {0};sscanf(ch_return,"%[^|]|%[^|]|%[^|]|%[^|]|",ch_other1,ch_other2,ch_other3,ch_other4);结果
ch_other1=1
ch_other2=null
ch_other3=null
ch_other4=null当第二个分隔符里没有数据时,后面的就无法正确的获取了,在ch_return="1|2|3|4|"时才可以正确获取;有什么办法解决.

解决方案 »

  1.   

    用AfxExtractSubString()可以处理连续分隔符中间空值
      

  2.   

    char ch_return[256] = "1||3|4|";
    char ch_other1[256] = {0};
    char ch_other2[256] = {0};
    char ch_other3[256] = {0};
    char ch_other4[256] = {0};
    CString strDataTemp; 
    int i = 0; 

    while (AfxExtractSubString(strDataTemp, ch_return, i++, '|')) 

    if(i==1) sprintf(ch_other1,"%s",strDataTemp);
    else if(i==2) sprintf(ch_other2,"%s",strDataTemp);
    else if(i==3) sprintf(ch_other3,"%s",strDataTemp);
    else if(i==4) sprintf(ch_other4,"%s",strDataTemp);