我正在编写一个函数eliminate(char *str, int character)
,它需要一个 c 字符串和一个要消除的字符作为输入,扫描str
实例character
并将当前索引处的值替换为......什么?我想NULL
,但这似乎有风险,并且可能会与其他依赖于 c 字符串中的空终止符的函数混淆。例如:
char *eliminate(char *str, int character) {
if (!str) return str;
int index = 0;
while (str[index])
if (str[index] == character)
str[index++] = '\0'; //THIS LINE IS IN QUESTION
return str;
}
我的问题是,如何正确实现此功能,以便有效地消除字符串中指定字符的所有实例?如果适当的消除分配'\0'
给要替换的字符,这如何不影响整个字符串(即,它有效地在第一次'\0'
遇到时结束)。例如,如果我在同一个字符串上运行上述函数两次,第二次调用将只检查字符串直到最后一个字符被替换的位置。