/* * Sample answer * Author: Programming C teaching group * Date: 2026/10/15 */ #include #include #include #define BUFSIZE 128 int main(){ char str[BUFSIZE] = "[Wakamatsu]"; /* データ用文字列バッファ */ char buf_in[BUFSIZE]; /* 入力用文字列バッファ */ int in_len; /* 挿入される文字列の長さ */ int str_len; /* 現在の文字列の長さ */ int n; /* データを挿入する文字番号 */ int i; while(1){ printf("Current string: %s\n", str); printf("input-> "); if(scanf("%d %s", &n, buf_in) != 2){ break; } /* 文字列長さチェック */ in_len = strlen(buf_in); /* 挿入される文字列の長さ */ str_len = strlen(str); /* 現在の文字列の長さ */ /* '[' ']' '\0' を含めてBUFSIZEを越えたらエラー */ if(str_len + in_len + 3 > BUFSIZE){ printf("Error in length.\n"); continue; } /* 保持している文字列よりも後ろに挿入しようとしたらエラー */ if(n > str_len){ printf("Error in position\n"); continue; } /* 入力のデータの長さ分、元データの文字を後ろに移動する */ /* 文字列の最後からさかのぼるように移動を行うのがポイント */ for(i = str_len; i >= n; i--){ str[i + in_len + 2] = str[i]; } /* 移動して空けた部分に入力された文字を挿入 */ str[n] = '{'; for(i = 0; i < in_len; i++){ str[n + 1 + i] = buf_in[i]; } str[n + 1 + in_len] = '}'; } return 0; }