c语言原始分隔字符串,c语言实现分隔字符串

2018-11-18 回答

二楼好像没理解题意,有时间我写一个,但分数也太少了吧?悲哀!

/*

以下程序可以实现替换字符串中的字符串

*/

#include

#include

char * replace(char *str, char *str1, char *str2, char *strretu)

{

char *str_temp = str;

char *str1_temp = str1;

char *str2_temp = str2;

char *strretu_temp = null;

unsigned long char_size = (unsigned long)sizeof(char);

/*计算字符长度*/

unsigned long i,j,rep_acc = 0;

unsigned long str_len = strlen(str);

unsigned long str1_len = strlen(str1);

unsigned long str2_len = strlen(str2);

/*首先找出str里有几个地方要被替换的*/

for(; str_temp - str < str_len; )

{

for(i = 0; i < str1_len; i++)

{

if(*str_temp++ != *str1_temp++)

{

str1_temp = str1;

break;

}

else

{

if(i == str1_len - 1)

{

str1_temp = str1;

rep_acc++;

}

}

}

}

str1_temp = str1;

str_temp = str;

/*分配所需内存*/

strretu = strretu_temp = malloc(((str_len - str1_len * rep_acc) + str2_len * rep_acc + 1) * char_size);

/*替换*/

for(; str_temp - str < str_len; )

{

for(i = 0; i < str1_len; i++)

{

*strretu_temp++ = *str_temp;

if(*str_temp++ != *str1_temp++)

{

str1_temp = str1;

break;

}

else

{

if(i == str1_len - 1)

{

strretu_temp = strretu_temp - str1_len;

for(i = 0; i < str2_len; i++)

{

*strretu_temp++ = *str2_temp++;

}

str2_temp = str2;

str1_temp = str1;

}

}

}

}

*strretu_temp = '\0';

str1_temp = str1;

str_temp = str;

str2_temp = str2;

return(strretu);

}

int main(void)

{

/*

char *str = "asdf123asdf123aa";

char *str1 = "123";

char *str2 = "999";

char *str = "eeeeee1245eeeeeeeeee1245eeeeeeeeeeeee1245eeeeeeeeeeee1245eeeeeeeeeeeee";

char *str1 = "1245";

char *str2 = "ffffffff";

*/

char *str = "fffffff0fffffff1fffffff2fffffff3fffffff4fffffff5fffffff6fffffff7fffffff8fffffff9";

char *str1 = "fffffff";

char *str2 = "月梦";

char *strretu = null;

printf("str = %s\n", str);

printf("str1 = %s\n", str1);

printf("str2 = %s\n", str2);

strretu = replace(str, str1, str2, strretu);

printf("strretu = %s\n", strretu);

getch();

free(strretu);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值