定义为
char * getsubstr(const char *strSource, int begin, int lenth)
功能为在strSource中,从begin开始,获得长度为lenth的子串。以前有过这个函数,今天再编,却晕头转向,请大家帮帮忙,我卡在这里好长时间了。

解决方案 »

  1.   

    char * p=strSource;
    for(int i=0;i<begin;i++)
    {
        p++;
    }
    char *newstr=new char[length];
    for(i=0;i<length;i++)
    {
       *newstr++=*p++;
    }
    return newstr;
    自己再改改吧~
    不一定对的哦~
      

  2.   

    如果函数返回char*的话,由于不能返回局部变量,所以函数必须在堆中分配内存。但释放内存却是调用者的责任。此时调用者和被调用者相互遵首内存的分配和释放约定。
    char * getsubstr(const char *strSource, int begin, int lenth)
    {
        char *p = new char[length + 1];
        // in C:  char *p = (char *)malloc(sizeof(char) * (length + 1));
        strncpy(p, strSource + begin, length);
        p[length] = 0;
        return p;
    }另一种方式是在函数中定义静态变量,但此变量必须定义得足够大才行。
    char * getsubstr(const char *strSource, int begin, int lenth)
    {
        char sz[1024];
        strncpy(sz, strSource + begin, length);
        sz[length] = 0;
        return sz;
    }
    而且返回值应立即拷贝到其它的内存地址,因为下次调用时该地址的值会发生变化.我觉得这个方法不错char * strntcpy(char *strDest, const char *strSource, int begin, int lenth)
    {
        strncpy(strDest, strSource + begin, length);
        strDest[length] = 0;
        return strDest;
    }
      

  3.   

    第二个函数写错了。
    sz的定义应为
    static char sz[1024]