void my_strdel(char *str, int ix, int sz) { if( sz <= 0 || ix < 0 ) { // sz が0以下、または ix < 0 の場合は何もせずリターン return; } int len = strlen(str); if( ix >= len ) { // ix が文字列長以上の場合も何もせずリターン return; } if( ix + sz >= len ) { // 文字列の末尾まで削除する場合 str[ix] = '\0'; } else { char *dst = str + ix; // コピー先アドレス const char *src = str + ix + sz; // コピー元アドレス while( (*dst++ = *src++) != '\0' ) { // 文字列を前に移動 } } }
解説:
前: | 次: