编写一个字符串整理函数void squeeze(),该函数将str1字符串中所有在字符串str2中出现的字符删掉
时间: 2025-01-19 21:10:35 浏览: 41
要编写一个名为`squeeze()`的C语言函数,这个函数接受两个字符串参数`str1`和`str2`,并移除`str1`中`str2`中包含的所有字符,你可以使用`for`循环遍历`str1`中的每个字符,如果该字符不在`str2`中,则将其添加到结果字符串中。这里有一个简单的实现:
```c
#include <stdio.h>
#include <string.h>
// 创建一个新的字符串,用于存储处理后的结果
char* create_result_string(const char* str1, const char* str2) {
size_t len1 = strlen(str1);
size_t len2 = strlen(str2);
// 计算去除str2字符后str1的长度
for (size_t i = 0; i < len1; ++i) {
if (strchr(str2, str1[i]) == NULL) {
len1--;
}
}
// 动态分配新的字符串空间
char* result = malloc(len1 + 1); // 加1是因为我们要加上终止符'\0'
if (result != NULL) {
// 将str1中非str2字符复制到新字符串
for (size_t i = 0, j = 0; i < len1; ++i) {
if (strchr(str2, str1[i]) == NULL) {
result[j++] = str1[i];
}
}
result[j] = '\0'; // 结束字符串
} else {
printf("Memory allocation failed.\n");
return NULL;
}
return result;
}
// 函数声明,注意void类型
void squeeze(char* str1, const char* str2);
int main() {
char str1[] = "Hello, World!";
char str2[] = "lo";
char* result = create_result_string(str1, str2);
if (result != NULL) {
printf("Squeezed string: %s\n", result);
free(result); // 不要忘记释放内存
}
return 0;
}
// 函数定义
void squeeze(char* str1, const char* str2) {
create_result_string(str1, str2); // 在这个函数里,我们直接调用create_result_string()
}
阅读全文
相关推荐










