我有一个字符串如下:
char szText[] = {"DBName=aaa,DBUser=aaa,DBPass=safdff"};
我想把它中间的参数切出来。于是我写
sscanf(szText, "DBName=%s,DBUser=%s,DBPass=%s", szName, szUser, szPass);
结果好像不行,请问有没有这种能切出所需数据的方法呀?在这里拜谢了。

解决方案 »

  1.   

    '='和','都是字符串的一部分,sscanf不能将它们作为分割符.
    strchr或strstr
      

  2.   

    char szText[] = {"/*加上字符串长度*/DBName=aaa,/*加上字符串长度*/DBUser=aaa,/*加上字符串长度*/DBPass=safdff"};char szName[],szUser[],szPass[] 按长度读取
      

  3.   

    用CString的成员函数可以做到。
      

  4.   

    谢谢武陵散人,根据你的建议,我写了一个函数解决了。
    void CCommonData::GetTextPamar(const char *szText, const char* szCondition, char* szValue)
    {
    int   i;
    int   nCount;
    char* pPos                   = NULL; 
    int   nPos                   = 0; pPos = strstr(szText, szCondition);
    if(pPos != NULL)
    {
    nPos = pPos - szText + strlen(szCondition);
    for(i = nPos; i < (int)strlen(szText); i++)
    {
    nCount = i - nPos;
    if(nCount >= MAX_BUFF_50)
    {
    szValue[MAX_BUFF_50 - 1] = '\0';
    break;
    } if(szText[i] == ';')
    {
    szValue[nCount] = '\0';
    break;
    }
    else
    {
    szValue[nCount] = szText[i];
    }
    }
    }
    }//调用的时候只是
    CCommonData::Instance().GetTextPamar(szText, "USER=",     szUser);
    给分,呵呵。