文字列置換の実装
タイトル:3つの文字列を入力し、最初の文字列からすべての2番目の文字列を見つけ、3番目の文字列はすべての2番目の文字列を置き換え、最後に新しい文字列を出力します.
本題はstrstr()ライブラリ関数を用いてサブストリングの位置を探し,置換すればよい.
c言語ポインタ操作コード:
本題は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;
}