从一个字符串中移除包含在另一个字符串中的字符。输入两行字符串,将第一行字符串中包括第二行字符串中的所有字母去除。输出去除后保留的字符串。 输入格式: 第一行输入一个字符串第二行输入一个字符串 输出格式: 输出移除后的字符串 C语言
时间: 2024-12-12 22:14:33 浏览: 20
要实现从一个字符串中移除包含在另一个字符串中的字符,可以使用C语言中的字符数组和循环结构来处理。以下是一个示例代码,展示了如何实现这一功能:
```c
#include <stdio.h>
#include <string.h>
void removeChars(char *str, const char *remove) {
int hash[256] = {0}; // 创建一个哈希表来存储要移除的字符
int len = strlen(remove);
// 将要移除的字符存入哈希表
for (int i = 0; i < len; i++) {
hash[(unsigned char)remove[i]] = 1;
}
int i, j;
len = strlen(str);
// 遍历字符串,移除字符
for (i = 0, j = 0; i < len; i++) {
if (!hash[(unsigned char)str[i]]) {
str[j++] = str[i];
}
}
str[j] = '\0'; // 添加字符串结束符
}
int main() {
char str[1000];
char remove[1000];
// 输入两行字符串
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // 去除换行符
fgets(remove, sizeof(remove), stdin);
str[strcspn(remove, "\n")] = '\0'; // 去除换行符
// 调用函数移除字符
removeChars(str, remove);
// 输出结果
printf("%s\n", str);
return 0;
}
```
### 代码解释
1. **哈希表初始化**:创建一个大小为256的整型数组`hash`,用于存储要移除的字符。
2. **填充哈希表**:遍历第二个字符串,将每个字符的ASCII值作为索引,将对应的位置设为1。
3. **移除字符**:遍历第一个字符串,将不在哈希表中的字符保留下来。
4. **处理输入**:使用`fgets`函数读取输入,并去除换行符。
5. **输出结果**:打印处理后的字符串。
阅读全文