我正在编写一个函数eliminate(char *str, int character)
,它将一个c字符串和一个字符作为输入消除,对character
的实例进行扫描str
,并用当前索引替换值。 .. 什么?我认为NULL
,但这似乎有风险,可能会混淆依赖于C字符串中的空终止符的其他函数。例如:将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;
}
我的问题是,我该如何正确地实现这一功能,使得我有效地消除在字符串中指定字符的所有实例?如果适当的消除将分配给要被替换的字符,这如何不影响整个字符串(即,它有效地在遇到的第一个结束)。例如,如果我要在同一个字符串上运行上述函数两次,第二次调用将只检查字符串,直到最后一个字符被替换。
你可能要重新考虑这个循环...好像它会永远运行... – Barry
'NULL'不是一个char和永远不得用作一个整数值。大多数编译器将其定义为'(void *)0'。启用编译器警告并注意他们! – Olaf
并选择一种语言。 – Olaf