我现在做手机铃声的发送,铃声做成后存成一个文件sound1.txt,sound2.txt......文件长度不定,格式
为:0x01,0x02,0x03......0xfe
我现在要把它读出来,并且要把char s[1]=0x01;
 s[2]=0x02;
 s[3]=0x03;
 ......
 s[i]=0xfe;
赋值要如上所示,还要判断文件是否读完,并且每次只能读160个字符,也就是说若文件的长度大与160,要分段读.

解决方案 »

  1.   

    可以先得到 filename,然后判断它的长度是否大于160,如果大于的话就把前一段读出来,紧接着在读第二段!
      

  2.   

    每次读4个字符,Seek到当前位置+1,再读4个....这样不就可以了。
      

  3.   

    int GetChar(CString &LineText, char *ch, int count)
    {
        int iPos = -1;
    CString text;
            int  i = 0; if(LineText.IsEmpty())
    return -1;        while(1)
    {
    iPos = LineText.Find(",");      
    if(iPos == -1)
    {
        ch[i] = atoi(LineText.GetBuffer(10)); //想办法保存Num
    i++;
        return i;  //这是一行结束
    }
    if(LineText.IsEmpty())
    continue;
    text = LineText.Left(iPos);
    ch[i] = atoi(text.GetBuffer(10));         //想办法保存Num
    i++;
    if(i >= count)
            return i;
    //LineText = LineText.Right(LineText.GetLength() - iPos - 1);
    LineText.Delete(0, iPos + 1);
    LineText.TrimLeft();
    } return -1;
    }
       CString     FileText;
        CString     LineText;
    CStdioFile  stFile;
    BOOL     ret = TRUE;
    char     c[160];
    CString FilePathName; stFile.Open("f:\\dd", CFile::modeRead | CFile::typeText);

    while(1)
    {
    ret = stFile.ReadString(LineText);
    if(!ret)
    {
        break;   //这是文件结束
    }

    LineText.TrimLeft();
    LineText.TrimRight();
    FileText = FileText + LineText + ",";
    }
         stFile.Close();
        
    while(1)
    {
    if(GetChar(FileText, c, 50) == -1)
    break;
    //你可以处理你的那160个字了
    }方法虽有点笨,但好控制
      

  4.   

    我的一点改进意见http://expert.csdn.net/Expert/TopicView1.asp?id=1444041
      

  5.   

    demetry(大松), LinHanLao(凌寒):
    二位高手:
        我编译时出错了:'ReadMsgGile' : local function definitions are illegal.
        我现在要把每次不同的token赋值给s1,s2......等.你那样做好象不行.
    能不能麻烦你们一下.分可以追加.
        谢谢各位.
      

  6.   

    ReadMsgGile  应该是ReadMsgFile吧