char str[] = "E00000,F10012,G20000,H00000,I00000,J00000"; //很有规律
int  val[6];
怎样把字母后的第一个数字依次放进val数组里?
sscanf可以吗?

解决方案 »

  1.   

    sscanf( str, "E%d0000,F%d0012,...", val1, val2, ... );
      

  2.   

    sscanf( str, "E%1d0000,F%1d0012,...", val1, val2, ... );  sorry :)
      

  3.   

    字母后的数字个数虽相同,5个,但值不一样,每次可能都要改变的,这次是
    E00000,F10012,G20000,H00000,I00000,J00000,下次可能是
    E10011,F10042,G20040,H02000,I10020,J00001
      

  4.   

    sscanf( str, "E%05d,F%05d,...", val1, val2, ... );
      

  5.   

    sscanf( str, "E%05d,F%05d,...", val1, val2, ... );
    运行出错
      

  6.   

    省略号表示后面要写的,我没写全.char str[] = "E00000,F10012,G20000,H00000,I00000,J00000"; 
    int val[6];sscanf( str, "E%05d,F%05d,G%05d,H%05d,I%05d,J%05d,", val, val+1, val+2, val+3, val+4, val+5 );... ...
      

  7.   

    CString strTemp = str;
    char chTemp;
    for (int i=0; i< sizeof(val)/sizeof(val[0]); i++)
    {
        sscanf(strTemp, "%c%05d", &chTemp, &val[i]);
        strTemp.Right(strTemp.GetLength() - 7);
    }
      

  8.   

    VC++ 6.0为例:
    CString strTemp = str;
    char chTemp;
    for (int i=0; i< sizeof(val)/sizeof(val[0]); i++)
    {
        sscanf(strTemp, "%c%05d", &chTemp, &val[i]);
        strtemp = strTemp.Right(strTemp.GetLength() - 7);
    }