0

我正在尝试char* removeChars(char* str, char* remove)实施C

但是,如果我通过"Battle of the Vowels"and "aeiou",我会被"Bttlftwl"退回。任何帮助指出我的代码中的错误将不胜感激!为即将到来的面试做准备!请注意,这是来自 Programming Interviews Exposed 的一个问题,提供的解决方案是用 C# 编写的,我也在尝试实现 C 版本以进行练习。

char* removeCharacters(char* string, char* toRemove)
{
    int flags[128];
    while(*toRemove)
    {
        flags[*toRemove] = 1;
        toRemove++;
    }
    char* head = string;
    char* src = string;
    char* dest = string;
    while(*string)
    {
        if (!flags[*string])
        {
            *dest = *src;
            dest++;
        }
        src++;
        string++;
    }
    *dest = NULL;
    return head;

}
4

1 回答 1

7

您的代码的一个主要问题是您没有初始化所有flags,这意味着数组的部分(甚至大部分)将包含不确定的值。包括数组在内的局部变量未初始化。你必须自己做。

一个非常简单的方法是做

int flags[128] = { 0 };

因为这会将所有值初始化为零。

于 2013-11-11T06:20:39.353 回答