用C语言编程实现由键盘任意输入一串字符,再输入一个字符,在此串字符中查找是否有此字符,如果有从此串字符中删除此字符。如:原串为abcdef,删除字符为c,新串为abdef(还需存放在原来的数组中)。
时间: 2024-03-22 19:42:11 浏览: 64
好的,这是一个比较基础的字符串操作问题,我可以帮你解答。以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], ch, *p;
int len;
printf("请输入一串字符:");
fgets(str, 100, stdin);
len = strlen(str);
if (str[len - 1] == '\n') {
str[len - 1] = '\0';
len--;
}
printf("请输入要删除的字符:");
scanf("%c", &ch);
p = str;
while (*p) {
if (*p == ch) {
memmove(p, p + 1, len - (p - str));
len--;
} else {
p++;
}
}
printf("删除后的字符串为:%s", str);
return 0;
}
```
代码解释如下:
1. 首先定义一个字符数组`str`、要删除的字符`ch`以及一个指针`p`;
2. 通过`fgets`从键盘输入一串字符,并获取字符串长度`len`;
3. 如果输入的字符串最后一个字符是`\n`,则将其替换为`\0`,同时`len`减1;
4. 从键盘输入要删除的字符;
5. 定义指针`p`指向字符串`str`的首地址,使用`while`循环遍历字符串中的每个字符:
- 如果当前字符等于要删除的字符,使用`memmove`将后面的字符往前移动一位,并将`len`减1;
- 如果当前字符不等于要删除的字符,指针`p`向后移动一位;
6. 循环结束后,输出删除后的字符串。
注意事项:
- 在使用`fgets`时,需要注意输入的字符串长度不能超过数组的大小,否则会导致内存溢出;
- 在使用`memmove`时,需要注意参数的顺序,源地址在前,目的地址在后。
阅读全文