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' ) { // 文字列を前に移動
}
}
}
解説:
前: | 次: