文字列置換の実装


タイトル:3つの文字列を入力し、最初の文字列からすべての2番目の文字列を見つけ、3番目の文字列はすべての2番目の文字列を置き換え、最後に新しい文字列を出力します.
本題は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
", output); return 0; }