替换cstring中的某些单词

时间:2016-04-09 20:43:37

标签: c c-strings

我有一个测试驱动程序,我将给它随机生成一串单词,并随机选择一个替换单词替换为另一个随机选择的单词。

我的代码获得了正确的更改次数,可以找到并删除所选的单词,但在大多数情况下,我在校正后留下了额外的空间,我无法弄清楚为什么会发生这种情况。

int replaceText(char *line, char * const word, const char * const repl)
  {
    char * location = strstr(line, word);
    int wordLength = strlen(word),
        counter = 0,
        delSpace = 0;

    while(location)
    {
        counter++;
        for (int i = 0; i < wordLength; i++)
        {
            *(location + i) = ' ';
            delSpace++;
            if (i <= wordLength)
            {
                for (int j = 0;j<wordLength;j++)
                {
                    for(int shiftChar = 0;shiftChar<=(wordLength - delSpace);shiftChar++)
                    {
                        line[j] = line[j+1];
                    }
                }
            }
        }
        *location=*repl;
        location = strstr(line, word);
    }
    return counter;
}

此外,我在编译器中链接的测试驱动程序会自动输出所有文本。

0 个答案:

没有答案