c语言指针编程怎么删除空格

时间:2025-03-04 01:54:41 明星趣事

在C语言中,使用指针删除字符串中的空格可以通过以下步骤实现:

初始化两个指针 :一个指针(`src`)用于遍历原始字符串,另一个指针(`dest`)用于指向处理后的字符串的末尾。

遍历原始字符串:

使用`src`指针遍历字符串,如果当前字符不是空格,则将其复制到`dest`指针指向的位置,并将`dest`指针后移。如果当前字符是空格,则跳过该字符,`src`指针继续后移。

处理字符串末尾的空格:

在遍历结束后,`dest`指针指向的位置可能会有一个或多个空格。需要将这些空格删除,并将`dest`指针移动到字符串的末尾。

添加结束符:

在`dest`指针的位置添加字符串结束符`\0`。

```c

include

include

include

void removeSpaces(char *str) {

char *src = str;

char *dest = str;

// 遍历原始字符串

while (*src != '\0') {

if (!isspace(*src)) {

*dest++ = *src;

}

src++;

}

// 处理字符串末尾的空格

while (dest > str && isspace(*(dest - 1))) {

dest--;

}

// 添加结束符

*dest = '\0';

}

int main() {

char str[] = " Hello World! ";

printf("Original string: %s\n", str);

removeSpaces(str);

printf("String without spaces: %s\n", str);

return 0;

}

```

代码解释:

初始化指针

`src`和`dest`都指向字符串的首地址。

遍历原始字符串

使用`while`循环遍历字符串,直到遇到字符串结束符`\0`。

如果当前字符不是空格(使用`isspace`函数判断),则将其复制到`dest`指针指向的位置,并将`dest`指针后移。

如果当前字符是空格,则`src`指针继续后移,跳过该字符。

处理字符串末尾的空格

使用`while`循环从字符串末尾向前遍历,跳过所有的空格。

`dest`指针最终指向最后一个非空格字符的末尾。

添加结束符

在`dest`指针的位置添加字符串结束符`\0`,完成字符串的删除操作。

通过这种方式,可以有效地删除字符串中的所有空格,并且保持字符的相对顺序不变。