我想删除字符串数组的第i个成员,并将其后的每个成员都放在一个优先位置(第i + 1个成员到i等)。我想出了以下代码:

    for (int j = i; j < arrSize - 1; j++) {
        strcpy(members[j],members[j+1]);
    }
    free(members[arrSize-1]);


但这使我想到这可能是错误的。例如,如果第i个位置的成员包含名称“ John”,而第(i + 1)个位置的成员包含名称“ Joshua”,这意味着每个字符串的长度都不同,那么是否会有任何内存泄漏或任何问题?提前致谢!

编辑:成员的定义:

members = malloc(maxMembersNum * sizeof(char*));

最佳答案

而不是复制字符串的内容,为什么不移动指针呢?那是:

for (int j = i; j < arrSize - 1; j++) {
    char *temp = members[j];
    members[j] = members[j+1];
    members[j+1] = temp;
}
free(members[arrSize-1]);

关于c - 在C中的字符串数组的成员之间交换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29857981/

10-12 14:37