编写一个字符串函数void squeeze(char str1[],char str2[]),该函数将str1字符串中所有在字符串str2中出现的字符删掉,如char s1[20]="THISISABOOK",s2[5]="IS",则调用函数后,s1="THABOOK"。
时间: 2023-12-06 09:42:19 浏览: 38
下面是实现squeeze函数的代码:
```c
#include <stdio.h>
#include <string.h>
void squeeze(char str1[], char str2[]) {
int i, j, k;
int len1 = strlen(str1);
int len2 = strlen(str2);
for (i = j = 0; i < len1; i++) {
for (k = 0; k < len2; k++) {
if (str1[i] == str2[k]) {
break;
}
}
if (k == len2) {
str1[j++] = str1[i];
}
}
str1[j] = '\0';
}
int main() {
char s1[20] = "THISISABOOK";
char s2[5] = "IS";
squeeze(s1, s2);
printf("%s\n", s1); // 输出 THABOOK
return 0;
}
```
函数中的思路就是遍历字符串str1中的每个字符,对于每个字符,都在字符串str2中查找是否存在。如果存在,就跳过该字符;如果不存在,就将该字符保留下来。最后,将修改后的str1字符串末尾加上'\0',表示字符串的结束。
相关问题
c语言编写一个字符串整理函数void squeeze( char *str1,char *str2),该函数将str1字符串中所有在字符串str2中出现字符删除掉
好的,我来帮您编写这个函数。
函数定义如下:
```c
void squeeze(char *str1, char *str2);
```
函数参数说明:
- `str1`:要整理的字符串。
- `str2`:包含要删除的字符的字符串。
函数实现:
```c
#include <string.h>
void squeeze(char *str1, char *str2) {
char *p = str1; // p指向str1字符串中当前未删除的字符
int len = strlen(str2);
while (*p != '\0') {
if (strchr(str2, *p) == NULL) { // 如果当前字符不在str2中,则保留该字符
*str1++ = *p;
}
p++;
}
*str1 = '\0'; // 添加字符串结束标志
}
```
函数说明:
- `strchr(str2, *p)` 函数用于判断当前字符是否在 `str2` 字符串中,如果返回值为 `NULL`,则说明该字符不在 `str2` 中。
- `*str1++ = *p` 表示将指针 `p` 指向的字符复制到 `str1` 指向的位置,并将 `str1` 指针向后移动一位。
- 最后,别忘了在整理后的字符串末尾添加字符串结束标志 `\0`。
希望这个函数能够满足您的需求。
重新编写函数squeeze(s1,s2)
当然,我可以帮你重新编写函数squeeze(s1, s2)。以下是一个可能的实现:
```python
def squeeze(s1, s2):
result = ''
for char in s1:
if char not in s2:
result += char
return result
```
这个函数的作用是从字符串s1中删除所有在字符串s2中出现的字符,并返回结果。它遍历字符串s1的每个字符,如果字符不在字符串s2中,则将其添加到结果字符串result中。最后返回result。
请注意,这只是一种实现方式,根据具体需求,可能会有其他实现。希望这个函数能满足你的要求!如果你有任何其他问题,请随时提问。