gpt4 book ai didi

c - 如何删除二维字符数组中的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:24 24 4
gpt4 key购买 nike

给定一个二维字符数组,或者换句话说,一个给定大小的字符串数组,例如:

char array[100][6];

数组是这样填充的:

{"john", "mark", "megan"} and so on...

如何删除给定的单词?例如,删除“标记”。

我在某处读到我们必须用下一个字符串替换要删除的字符串。

我目前的代码:

void remove_string(char array[100][6], char *string, int array_size){
for(int i = 0; i < array_size; i++){
if(strcmp(array[i], string) == 0){
for(int j = i; j < array_size; j++){
strcpy(array[j], array[j+1]);
}
}
}
}

去除“标记”后的预期结果:

{"john", "megan"}

代码似乎可以工作,但是可以不使用另一个循环来完成吗?

我也想复制除要删除的单词之外的所有单词到另一个数组并返回新数组,但我似乎无法找到只复制“其他单词”的方法。

最佳答案

您的函数中已经有一个迭代元素的循环。您可以使用相同的循环就地删除元素。

迭代时你需要的是另一个整数。该整数将保存当前元素需要在数组中移动的位置的索引。

在你的函数中声明一个新的整数为 -

int new_position = 0;

现在在你的循环中,你通常检查字符串是否匹配删除字符串 -

for (int i = 0; i < array_size; i++) {
if (strcmp(array[i], string) == 0) {
// Do nothing. and continue
continue;
}
if (new_position != i) {
//Move the other elements
array[new_position] = array[i];
}
new_position++;
}

array_size = new_position;

这也会自动保留元素的顺序并删除所有匹配的元素。

关于c - 如何删除二维字符数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com