在字符串S1中删除字符串S2中所包含的字符【转】
2017-12-21 15:39
513 查看
转自:http://www.cnblogs.com/tolimit/p/4202959.html
/************************************************************************* > File Name: test.c > Author: ToLiMit > Mail: 348958453@qq.com > Created Time: Sun 04 Jan 2015 06:20:05 PM PST ************************************************************************/ #include<stdio.h> void delete_str_char (char * main_str, char * sub_str) { if ((main_str == NULL) || (sub_str == NULL)) return; char * sub_index = sub_str; char * main_index = main_str; char bitmap[32] = {0}; char * str = (char *)malloc (strlen (str) + 1); char * index = str; memset (str, 0, strlen (str) + 1); while (*sub_index != '\0') { char suffix = ((*sub_index) / 8) - 1; char offset = (*sub_index) % 8; bitmap[suffix] |= (0x1 << (8 - offset)); sub_index++; } while (*main_index != '\0') { char suffix = ((*main_index) / 8) - 1; char offset = (*main_index) % 8; if ((bitmap[suffix] & (0x1 << (8 - offset))) == 0) { *index = *main_index; index++; } main_index++; } *index = '\0'; memcpy (main_str, str, strlen (str) + 1); free (str); return; } int main (int argc, char * argv[]) { char test[] = "aabcdaaaaabcaacb"; delete_str_char (test, "bcd"); printf ("%s\n", test); return 0; }
相关文章推荐
- 在字符串S1中删除字符串S2中所包含的字符
- 在S1字符串中删除S2字符串出现过的任意字符
- 编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除
- 在S1字符串中删除S2字符串出现过的任意字符
- 练习2-4 重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除。
- 将字符串s1中的任何与字符串s2中字符匹配的字符都删除
- 在S1字符串中删除S2字符串出现过的任意字符
- 在S1字符串中删除S2字符串出现过的任意字符
- 练习 2-5 编写函数 any(s1, s2),将字符串s2中的任一字符在字符串s1中第一次出现的位置作为结果返回。如果s1中不包含s2中的字符,则返回-1。
- 在S1字符串中删除S2字符串出现过的任意字符
- 2.4 重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除。
- 将字符串S1中任何与字符串S2中匹配的字符都删除,实现函数squeeze(s1,s2).
- 在S1字符串中删除S2字符串出现过的任意字符
- 在S1字符串中删除S2字符串出现过的任意字符
- 在S1字符串中删除S2字符串出现过的任意字符
- 在S1字符串中删除S2字符串出现过的任意字符
- 练习 2-5 编写函数 any(s1, s2),将字符串 s2 中的任一字符在字符串 s1 中第一次 出现的位置作为结果返回。如果 s1 中不包含 s2 中的字符,则返回-1。
- 练习2-5 编写函数any(s1,s2),将字符串s2中的任一字符在字符串s1中第一次出现的位置作为结果返回。如果s1中不包含s2的字符,则返回-1。
- 删除字符串 s1 中与 s2 对应的字符的程序, 如何改?
- 在S1字符串中删除S2字符串出现过的任意字符