这是用c语言实现的,代码经过编译,测试通过。
这个程序主要用到对指针的操作,以及memset ,memcpy的用法;关于这两个函数的用法,前一篇文章中已经给出。
我在编程时遇到的问题和出现的错误在程序后给出
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
int delete_sub_str(const char *str,const char *substr,char *result)
{
const char *p,*q;
//char *q;
char *temp,*t;
p = str;
q = substr;
int n,count = 0;
n = strlen(q);
temp = (char*)malloc(n+1);
memset(temp,0x00,n+1);
t = result;
while(*p)
{
memcpy(temp,p,n);
if(strcmp(temp,q)==0)
{
count++;
memset(temp,0x00,n+1);
p = p + n;
}
else
{
*t = *p;
p++;
t++;
memset(temp,0x00,n+1);
}
}
free(temp);
return count;
}
int main()
{
char s[100] = {'\0'};
int num = delete_sub_str("123abc12de234fg1hi34j123k","123",s);
printf("The number of sub_str is %d\r\n",num);
printf("The result string is %s\r\n",s);
}
我编程时问题:
一、就是一开始*p和*q指针定义成了
char *p,*q;
这时候系统报错如下:
cannot convert from ‘const char ’ to ‘char
也就是我函数定义中为const char*,它和char*不能相互转化。
所以应改成
const char *p,*q;
二、就是在运用memset 和memcpy时,
memset(temp,0x00,n+1);
一开始把逗号写成了分号