33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int replaceSubstr(char *src, char** dst, char *sub, char *new_sub);
int main()
{
char p1[] = "abcd11111abcd2222abcdqqqqq";
char * dst = NULL;
replaceSubstr(p1,&dst,"11111","rrr");
free(dst);
return 0;
}
//替换字符串中的指定字符串
int replaceSubstr(char *src, char ** dst, char *sub, char *new_sub)
{
//1.先找字串
char *start = strstr(src, sub);
if (start == NULL)
{
return -1;
}
//2.给dst分配足够大的空间
int length = strlen(src) - strlen(sub) + strlen(new_sub);
*dst = (char *)malloc(length+1);
if (*dst == NULL)
{
return -1;
}
memset(*dst, '\0', length+1);
printf("%d\n", length);
//3.将start标记为0
char c = *start;
*start = '\0';
printf("%d\n", strlen(src));
strcat_s(*dst, strlen(src) , src); //这个地方发生错误 , 有人能帮忙解答一下吗?
//4.恢复 ,将new串添加进去
*start = c;
strcat_s(*dst, strlen(new_sub), new_sub);
//5.将sub后面的cat到dst当中
char * end = start + strlen(src) - 1;
end++;
strcat_s(*dst, strlen(end), end);
return 0;
}
#include <stdio.h>
#include <string.h>
char s[256];
char *p;
int r,n,i;
int main() {
while (1) {
printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXX\":\n");
fgets(s,256,stdin);
if ('\n'==s[0]) break;
p=s;
while (1) {
p=strstr(p,"%20");
if (p) {
memmove(p+1,p+3,strlen(p)-3+1);
p[0]=' ';
} else break;
}
p=s;
while (1) {
p=strstr(p,"你懂得");
if (p) {
memmove(p+3,p+6,strlen(p)-6+1);
for (i=0;i<3;i++) p[i]='X';
} else break;
}
printf("%s",s);
}
return 0;
}
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXX":
//abcdefg%20helloworld%20something.pdf
//abcdefg helloworld something.pdf
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXX":
//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事
//这是测试文字XXX,在这个你懂的地方,就得做XXX的事
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXX":
//
#include <stdio.h>
#include <string.h>
char s[256];
char *p;
int r,n,i;
int main() {
while (1) {
printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");
fgets(s,256,stdin);
if ('\n'==s[0]) break;
p=s;
while (1) {
p=strstr(p,"%20");
if (p) {
memmove(p+1,p+3,strlen(p)-3+1);
p[0]=' ';
} else break;
}
p=s;
while (1) {
p=strstr(p,"你懂得");
if (p) {
memmove(p+6,p+6,strlen(p)-6+1);
for (i=0;i<6;i++) p[i]='X';
} else break;
}
printf("%s",s);
}
return 0;
}
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//abcdefg%20helloworld%20something.pdf
//abcdefg helloworld something.pdf
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事
//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//