キャー!
「今アナタ置換しましたよね!」
「えっ、いや、その、しましたけど・・・・・」
対象文字列のみで結果文字列の分も機能させようとすると、結構ややこしくなります。ずらしたりする必要がありますからね。
気が向いたらやる。
「えっ、いや、その、しましたけど・・・・・」
//------------------------------------------------- // 基本情報技術者試験 平成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; }
対象文字列のみで結果文字列の分も機能させようとすると、結構ややこしくなります。ずらしたりする必要がありますからね。
気が向いたらやる。