用C语言完成如下:【问题描述】删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用函数delchar(s,c),它的功能是将字符串s中出现的所有c字符删除 【输入形式】happy new year a 【输出形式】hppy new yer
时间: 2024-02-18 22:03:16 浏览: 20
好的,下面是用 C 语言实现的函数`delchar()`及完整代码:
```c
#include <stdio.h>
#include <string.h>
void delchar(char *s, char c) {
char *p = s; // 定义指针p指向字符串s的首地址
while (*p) {
if (*p == c) { // 如果p所指向的字符等于c,就将p所指向的字符删除
memmove(p, p+1, strlen(p)); // 使用memmove函数将p后面的字符向前移动一位
} else {
p++; // 否则p指针向后移动一位
}
}
}
int main() {
char s[1000], c;
scanf("%[^\n]%*c", s); // 读入字符串s,使用%[^\n]%*c格式化输入,可以读入包括空格在内的一行字符串
scanf("%c", &c); // 读入要删除的字符c
delchar(s, c); // 调用函数delchar()删除字符串s中所有的字符c
printf("%s\n", s); // 输出删除字符c后的字符串s
return 0;
}
```
在上述代码中,我们定义了一个 `delchar()` 函数,接收一个字符串和一个字符作为参数。该函数使用指针遍历字符串中的每一个字符,如果当前字符等于要删除的字符,就使用 `memmove()` 函数将该字符后面的所有字符向前移动一位,并将字符串长度减一。最后输出删除字符c后的字符串s。
在 `main()` 函数中,我们使用 `scanf("%[^\n]%*c", s)` 读入包括空格在内的一行字符串,这里的 `%[^\n]` 表示读入除了换行符以外的所有字符;`%*c` 表示读入并忽略一个字符,这里是读入并忽略换行符。接着,我们读入要删除的字符c,并调用 `delchar()` 函数将字符串s中所有的字符c删除,最后输出删除字符c后的字符串s。
希望这个答案能够解决你的问题。如果你还有其他问题,可以继续问我哦!