キャー!
「今アナタ置換しましたよね!」
「えっ、いや、その、しましたけど・・・・・」
対象文字列のみで結果文字列の分も機能させようとすると、結構ややこしくなります。ずらしたりする必要がありますからね。
気が向いたらやる。
「えっ、いや、その、しましたけど・・・・・」
//-------------------------------------------------
// 基本情報技術者試験 平成17年春期試験 午後問2
//
// 文字列置換の擬似アルゴリズム
//-------------------------------------------------
#include <stdio.h>
///////////////////////////////////////////////////
// Replace
//
// A - 対象文字列
// S - 照合文字列
// D - 置換文字列
// B - 結果文字列
///////////////////////////////////////////////////
void Replace(char *A, char *S, char *D, char *B)
{
int Aidx, Sidx, Didx, Bidx, Idx;
Aidx = Bidx = 0;
while (A[Aidx] != '\0') {
if (A[Aidx] == S[0]) {
Idx = Aidx;
Sidx = 0;
do {
Sidx++;
Aidx++;
} while (A[Aidx] == S[Sidx] && A[Aidx] != '\0');
if (S[Sidx] == '\0') {
Didx = 0;
while (D[Didx] != '\0')
B[Bidx++] = D[Didx++];
} else {
B[Bidx++] = S[0];
Aidx++;
}
} else {
B[Bidx] = A[Aidx];
Aidx++;
Bidx++;
}
}
B[Bidx] = '\0';
}
int main(void)
{
char A[] = "abcdefghijklmn";
char S[] = "cde";
char D[] = "CDE!";
char B[30];
Replace(A, S, D, B);
printf("%s\n", B);
return 0;
}
対象文字列のみで結果文字列の分も機能させようとすると、結構ややこしくなります。ずらしたりする必要がありますからね。
気が向いたらやる。