void my_strins(char *dst, int ix, const char *src) { int dlen = strlen(dst); // dst 文字例長 if( ix < 0 ) { // ix がマイナスの場合 ix = 0; } else if( ix > dlen ) { // ix が dst 文字数を超えていた場合 ix = dlen; } int slen = strlen(src); // src 文字例長 for(int i = dlen + 1; --i >= 0;) { dst[ix + i + slen] = dst[ix + i]; // dst を src の文字数分だけ後ろにずらす } for(int i = 0; i < slen; ++i) { dst[ix + i] = src[i]; // 空けた領域に src 文字列を順にコピーする } }
解説:
前: | 次: