gpt4 book ai didi

C - 在不使用 int 的情况下移动数组的更快方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:26 25 4
gpt4 key购买 nike

作为我的作业,我正在编写一个程序,该程序应该使用 bool 函数检查 char 数组并删除数组中返回 true 的所有字符。问题是我不允许使用索引(也不允许任何类型的 int 和库)。我写了一个代码来移动我的数组,但它太慢了。如果有人能指出我更快的方法,我将不胜感激。

bool filter(char* array, bool(*function)(char))
{
if(array)
{
char *start = array;
while(*(array) != 0)
{
if(function(*array) == false)
{
start++;
array++;
}
else
{
while(*(array) != 0)
{
*(array) = *(array + 1);
array++;
}
*(array) = 0;
tablica = start;
}
}
}
}

期待您的回复。

最佳答案

您不需要每次删除一个字符时都重新移位整个数组。在进行复制时,只需记录当前的往返位置即可。只要不可能将元素添加回数组,就不会覆盖任何内容:

bool filter(char* array, bool(*function)(char)){
if(array){
char *start = array;
while(*(array) != 0){
if(function(*array) == false){
*start = *array;
start++;
}
array++
}
*start = '\0';
}
return true;
}

关于C - 在不使用 int 的情况下移动数组的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412342/

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