题意:输入3个字符串,然后再第一个字符串中找出所有的第二个字符串,第三个字符串替换掉所有的第二个字符串,最后输出新的字符串。
本题不难的,就是使用strstr()库函数寻找到子串的位置,然后进行替换就可以了。
c语言指针操作代码:
//17/16 17:25
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
char *my_replace(char *str, char *sub1, char *sub2, char *output)
{
char *pOutput = NULL;
char *pStr = NULL;
int lenSub1 = strlen(sub1);
int lenSub2 = strlen(sub2);
pOutput = output;
pStr = str; //用于寻找子串
while(*pStr)
{
pStr = strstr(pStr, sub1); //在str中寻找sub1子串
if(NULL != pStr) //找到sub1子串
{
memcpy(pOutput, str, pStr - str); //复制str的前一部分到output
pOutput += pStr - str; //output的指针往后移动
memcpy(pOutput, sub2, lenSub2); //复制sub2子串到output
pOutput += lenSub2;
pStr += lenSub1; //为下一次复制做准备
str = pStr;
}
else
{
break; //找不到sub1子串
}
}
*pOutput = '\0';
if(*str != '\0')
{
strcpy(pOutput, str); //复制str剩余部分到output
}
return output;
}
int main()
{
char str[50] = "";
char sub1[10] = "";
char sub2[10] = "";
char output[100] = "";
printf("str: ");
scanf("%s", str);
printf("sub1: ");
scanf("%s", sub1);
printf("sub2: ");
scanf("%s", sub2);
my_replace(str, sub1, sub2, output);
printf("result: %s\n", output);
return 0;
}