我想格式化输出。
int a,b,c,d,e,f,g,h,i,j,k,l;
buf = "75,227,45,24,,,,,4,0,135,0“
sscanf(buf ,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,a,b,c,d,e,f,g,h,i,j,k,l);为什么输出后
a=75;
b=227;
c=45;
d=24;
e=0;
f=0;
g=0;
h=0;
i=0;//??
j=0;//??
k=0;//??
l=0;//??
应该怎么格式化输出啊?
不用sscanf也行,谢谢了。

解决方案 »

  1.   

    sscanf是输入,printf才是输出
    sscanf(buf,"%d", &i);
    printf("= %d\n", i);
      

  2.   

    1、sscanf(buf, "%d", &a); 
    2、sscanf()遇到",,,"这样的它就不执行之后的取值了。因此lz的字符串用sscanf并不合适
    建议:用CString::Find和CString::Mid 或者 strtok,取出每一部分的值,然后用atoi付给整形变量
      

  3.   

    你中间有多个 , sscanf处理不了,你可以先把多余的 , 去掉,然后再sscanf来处理
      

  4.   

    可以判断 sscanf 的返回值,看看获取了多少个数值。 int nValues[12];
    CString strNumber;
    TCHAR szBuffer[] = _T("75,227,45,24,,,,,4,0,135,0");
    int nIndex = 0; while (AfxExtractSubString(strNumber, szBuffer, nIndex, ','))
    {
    nValues[nIndex] = strNumber.IsEmpty() ? 0 : _ttoi(strNumber);
    nIndex++;
    }
    //nValues[0]、nValues[1]...nValues[11] 对应 a, b...l 的值。