我有一个测试驱动程序,我将给它随机生成一串单词,并随机选择一个替换单词替换为另一个随机选择的单词。
我的代码获得了正确的更改次数,可以找到并删除所选的单词,但在大多数情况下,我在校正后留下了额外的空间,我无法弄清楚为什么会发生这种情况。
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;
}
此外,我在编译器中链接的测试驱动程序会自动输出所有文本。