编写一个函数,用来删除字符串中的所有空格。 函数接口定义: 在这里描述函数接口。例如: void fun(char *str) ;
时间: 2024-09-30 22:04:51 浏览: 68
你可以编写一个名为`removeSpaces`的函数,它接受一个指向字符数组(char*)的指针作为输入参数,这个函数的主要目的是遍历字符串并移除其中的所有空格字符。以下是该函数的一个简单实现:
```c
#include <stdio.h>
#include <string.h>
void removeSpaces(char *str) {
if (str == NULL) {
return; // 如果字符串为空,直接返回
}
int i = 0, j = 0;
while (str[i] != '\0') { // 遍历直到遇到字符串结束符
if (str[i] != ' ') { // 如果不是空格,则将字符复制到新位置
str[j++] = str[i];
}
i++; // 移动到下一个字符
}
str[j] = '\0'; // 在末尾添加结束符,因为j记录了新的有效长度
}
// 示例用法
int main() {
char str[] = "Hello World! This is a test.";
removeSpaces(str);
printf("After removing spaces: %s\n", str);
return 0;
}
```
这个函数会处理空字符串,并在原地修改输入的字符串,使其不再包含空格。如果你想保留原始字符串,可以先创建一个新的字符串来存储结果。
相关问题
统计一个字符串中的字母、数字、空格和其它字符的个数。 函数接口定义: void fun(char s[],int b[]); 其中 s 和 b都是用户传入的参数。 函数fun统计字符串s中的字母、数字、空格和其它字符的个数,并将结果放在b数组中。
下面是代码实现:
```c
#include <stdio.h>
void fun(char s[], int b[]) {
int i = 0;
while (s[i] != '\0') {
if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z') { // 判断是否为字母
b[0]++;
} else if (s[i] >= '0' && s[i] <= '9') { // 判断是否为数字
b[1]++;
} else if (s[i] == ' ') { // 判断是否为空格
b[2]++;
} else { // 其它字符
b[3]++;
}
i++;
}
}
int main() {
char s[] = "Hello, World! 123";
int b[4] = {0};
fun(s, b);
printf("字母个数:%d\n", b[0]);
printf("数字个数:%d\n", b[1]);
printf("空格个数:%d\n", b[2]);
printf("其它字符个数:%d\n", b[3]);
return 0;
}
```
输出结果为:
```
字母个数:10
数字个数:3
空格个数:3
其它字符个数:2
```
用C++编写下列程序:编写函数void fun(char *a),该函数实现的功能是:将字符串a中除前导和尾部连续的*之外,其余的*全部删除。例如字符串:***a*b**,处理后为:***ab**。在main函数中,从键盘输入带*且无空格的字符串,调用fun函数处理字符串,并将处理后的字符串输出到屏幕上。说明:不得使用系统提供的字符串函数。
以下是实现该程序的C++代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char *a) {
int len = strlen(a);
int left = 0, right = len - 1;
while (left < len && a[left] == '*') left++; // 找到第一个非*字符的位置
while (right >= 0 && a[right] == '*') right--; // 找到最后一个非*字符的位置
int i, j;
for (i = left, j = left; i <= right; i++) {
if (a[i] != '*') {
a[j] = a[i];
j++;
} else if (i > 0 && a[i - 1] != '*') {
a[j] = a[i];
j++;
}
}
a[j] = '\0'; // 字符串末尾加上结束符
}
int main() {
char str[100];
cout << "请输入带*且无空格的字符串:";
cin >> str;
fun(str);
cout << "处理后的字符串为:" << str << endl;
return 0;
}
```
在程序中,首先用两个指针 `left` 和 `right` 找到字符串中除前导和尾部连续的 `*` 之外的最左和最右的非 `*` 字符的位置。然后,用另外两个指针 `i` 和 `j` 遍历字符串,将非 `*` 字符复制到新字符串中,并且只复制连续的 `*` 中的一个。最后,将新字符串末尾加上结束符,即可得到处理后的字符串。
阅读全文