用C语言实现去掉字符串所有空格的函数
时间: 2024-12-12 17:21:19 浏览: 15
在C语言中,你可以创建一个函数来删除字符串中的所有空格。下面是一个简单的实现示例,使用`strspn`和`memmove`函数:
```c
#include <stdio.h>
#include <string.h>
void removeSpaces(char* str) {
size_t len = strlen(str);
char nonSpaceChars[len+1]; // 存储无空格字符的新字符串
// 找到连续的非空格字符的位置
for (size_t i = 0; i <= len; ++i) {
if (str[i] != ' ') {
nonSpaceChars[i] = str[i];
} else {
while (i < len && str[i] == ' ') { // 遇到空格就跳过
i++;
}
}
}
// 将新字符串截断,防止越界
nonSpaceChars[len] = '\0';
// 把处理后的字符串复制回原位置
memmove(str, nonSpaceChars, len + 1);
}
int main() {
char testStr[] = "Hello World! This is a test.";
printf("Original string: %s\n", testStr);
removeSpaces(testStr);
printf("String without spaces: %s\n", testStr);
return 0;
}
```
这个函数会将输入字符串`str`中所有的空格替换为`'\0'`,实际上删除了它们。注意,`memmove`用于安全地移动数据,因为它可以处理源和目标重叠的情况。
阅读全文