用C语言写:去掉一个字符串中除头部和尾部空格外的所有空格。 输入: 占一行(注:输入的字符串长度不会超过80) 输出: 占一行 例如: abc de abcde
时间: 2024-12-31 13:49:22 浏览: 9
在C语言中,你可以使用两个指针分别指向字符串的首尾,然后逐字符遍历,遇到非空格就更新对应的指针位置,直到两者相遇。以下是相应的代码实现:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,去除字符串两端及内部多余空格
void removeSpaces(char *str);
int main() {
char str[81]; // 定义一个足够大的数组接收输入
fgets(str, sizeof(str), stdin); // 从标准输入获取字符串,包括换行符
// 调用函数并输出结果
removeSpaces(str);
printf("%s\n", str);
return 0;
}
// 去除字符串两端及内部多余空格的函数
void removeSpaces(char *str) {
int i = 0, j = strlen(str) - 1; // 初始化头尾指针
while (i < j && str[i] == ' ') i++; // 移动到第一个非空格字符
while (j > i && str[j] == ' ') j--; // 移动到最后一个非空格字符
// 如果头尾还有空格,复制非空格字符
if (i < j) {
memmove(str, &str[i], (j-i+1) * sizeof(char));
}
str[j+1] = '\0'; // 结束字符串
}
```
在这个代码中,`removeSpaces`函数会找到并移动到字符串的第一个非空格字符和最后一个非空格字符,然后使用`memmove`函数将它们之间的内容复制回原位置,最后删除多余的空格。
阅读全文