我可以在char数据类型中存储一些长度的字符串。
但当它超过它的容量时,什么是存储字符串的替代方法。
我正在使用char数据类型。

void setString(char* inPoints)
{
if (strcmp(mPoints, inPoints)!= ZERO) {

    if (mPoints) {

        free(mPoints);
    }

    mPoints = (char*)malloc((strlen(inPoints) + 1)  * sizeof(char));

    strcpy(mPoints, inPoints);
}
}

最佳答案

使用strncpy而不是strcpy通常更安全,但在这里,您为每个时间分配了将inPoint存储到mPoint所需的正确内存量,所以我看不出重点是什么。可以存储在mPoint中的字符串的最大长度受malloc可用内存量的限制。
添加:您可以按照建议realloc,如果字符串较短,可能还可以对长度添加一个检查,以避免重新定位;因此mPoint将始终保持字符串小于到目前为止遇到的最长字符串,或等于:


// somewhere altogether with mPoints
size_t mPointsCurrenStorage = INITVAL;
// e.g. INITVAL is 256, and you pre-malloc-ate mPoints to 256 chars
// ... in the func
size_t cl = strlen(inPoints);
if ( cl >= mPointsCurrentStorage ) {
  mPoints = realloc(mPoints, cl+1);
  mPointsCurrentStorage = cl+1;
}
strcpy(mPoints, inPoints);

这样存储空间只会增长。。。

关于c - 以char数据类型C语言存储字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2958314/

10-10 05:56