我想删除字符串数组的第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/