问题描述:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。
要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
【输入】 str:输入的被操作字符串
sub_str:需要查找并删除的特定子字符串
【输出】 result_str:在str字符串中删除所有sub_str子字符串后的结果
【返回】 删除的子字符串的个数
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include <stdlib.h>
void main()
{
int delSubStr(char * src,char * sub,char * result);
char *srcstr = "abcdefgde";
char *subp = "de";
char resp[100];
int count;
count = delSubStr(srcstr, subp, resp);
printf("删除的子串的个数: %d\n", count);
printf("原来的字符串 : %s\n", srcstr);
printf("删除后的字符串:: %s\n", resp);
}
/*删除字串函数,在src中删除sub子串,并将结果保存在result字符串中*/
int delSubStr(char * src,char * sub,char * result)
{
char *src_p = src;
char *sub_p = sub;
char *res_p = result;
int count = 0; //记录包含子串的个数
int sub_len = strlen(sub); //记录子串的长度
char *temp; //临时保存子串的副本
temp = (char*)malloc(sub_len + 1);
memset(temp,'\0',sub_len+1);
while (*src_p)
{
memcpy(temp,src_p, sub_len);
//printf("temp--sub:%s--%s:\n", temp,sub_p);
/*原串中包含与sub完全匹配的子串*/
if( !strcmp(temp, sub_p) )
{
count++;
src_p+=sub_len;
}else
{
*res_p++ = *src_p++;
}
}
*res_p='\0';
free(temp);
return count;
}
分享到:
相关推荐
关于结束符'\0'能否影响free()的使用,觉得是完全不用操心的,因为malloc的大小是系统来保存的,删除时候系统来接手就完了,而'\0'结束符只是针对一些常规字符串操作,比如printf()用%s控制输出时~! 新难点:...
q387_字符串中的第一个唯一字符 链表操作 q2_两数相加 q19_删除链表的倒数第N个节点 q25_k个一组翻转链表 q61_旋转链表 q138_复制带随机指针的链表 q160_相交链表 q206_反转链表 双指针遍历/滑动窗口 q3_无重复字符...
q387_字符串中的第一个唯一字符 链表操作 q2_两数相加 q19_删除链表的倒数第N个节点 q25_k个一组翻转链表 q61_旋转链表 q138_复制带随机指针的链表 q160_相交链表 q206_反转链表 双指针遍历/滑动窗口 q3_无重复字符...
5.6 面试例题:整数/字符串之间的转换81 第6章递归算法87 6.1 面试例题:二分法搜索91 6.2 面试例题:字符串的全排列93 6.3 面试例题:字符串的全组合98 6.4 面试例题:电话键单词101 第7章其他程序设计问题...
5.6 面试例题:整数/字符串之间的转换81 第6章递归算法87 6.1 面试例题:二分法搜索91 6.2 面试例题:字符串的全排列93 6.3 面试例题:字符串的全组合98 6.4 面试例题:电话键单词101 第7章其他程序设计问题...
通过先统计字符串中空格数量对数组扩展,然后按照题目要求扫描赋值。 ###### 代码主体 ###### class Solution: def replaceSpace(self, s: str) -> str: s = [str(s[i]) for i in range(len(s))] count =
给定两个字符串删除所有字符以使其成为字谜 实践指数: anyString = 'Brave new world' 从头开始的第一个 o 的索引 从头开始的最后一个 w 的索引 “新”的索引从头开始 “新”的索引从末尾开始 找出总和等于目标的...
数学、字符串 Easy 完成 0005 14.最长公共前缀 字符串 Easy 完成 0006 20.有效的括号 栈、字符串 Easy 完成 0007 21.合并两个有序链表 链表 Easy 完成 0008 26.删除排序数组中的重复项 数组、双指针 Easy 完成 0009 ...
面试题01.06:字符串压缩 +2 查找+双指针 面试题03:数组中重复的数字 +2 查找 面试题04:二维数组中的查找 +2 有序矩阵查找 面试题05:替换空格 +2 查找 面试题06:从尾到头打印链表 +2 栈+双数组 面试题07:重建...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
怎么向屏幕输出带空格的字符串,比如”helloworld”? 9、终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令? 10、移动文件用哪个命令?改名用哪个命令? 11、复制文件用哪个命令?如果需要连同...
2.一个长度为10000的字符串,写一个算法,找出最长的重复子串,如abczzacbca,结果是bc。最后就做出这一道题目,时间复杂度为O(n!), 空间复杂度为O(n)。 算法题: 1.连接两个单向链表,返回排序后的结果。 2.一个...
84.7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+...
★★★字符串去除字符串首尾空格 ★算法算法需要掌握基本的数据结构,例如栈、队列、链表、树、排序算法等等,建议去 LeetCode 上刷题。不过不要为了刷题而刷题,最重要的是归纳与总结,刷十道不如一道刷十遍。归并...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...