我知道这是一个以前被问过很多次的问题,但我不是在寻求解决方案本身,而是想知道为什么我的解决方案不起作用。
这是我的解决方案:
void delete_blanks(char *string)
{
while (*string)
{
if (*string == ' ')
*string = '\0';
*string++;
}
puts(string);
}
程序只是为每个输入打印空白 ("")。
在使用调试器运行时,我看到 *string
最后指向 '\0'。是否可以“就地”进行?
这是在这里找到的原始解决方案:
void RemoveSpaces(char* source)
{
char* i = source;
char* j = source;
while(*j != 0)
{
*i = *j++;
if(*i != ' ')
i++;
}
*i = 0;
}
最佳答案
这是一个很好的就地实现
int main(void) {
char inStr[] = "a cat is on the moon";
int end = 0;
for (int i = 0; i < strlen(inStr); i++) {
if (inStr[i] != ' ') {
if (i != end) {
inStr[end] = inStr[i];
}
end++;
}
}
inStr[end] = '\0';
printf("%s\n", inStr);
}
关于c - 从c中的字符串中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642366/