void my_strins(char *dst, const char *src)
{
int dlen = strlen(dst); // dst 文字例長
int slen = strlen(src); // src 文字例長
char *d = dst + dlen + slen; // dst に入って文字をコピーする先の最後のアドレス
char *s = dst + dlen; // dst に入ってる文字の最後のアドレス
for(int i = 0; i < dlen + 1; ++i) {
*d-- = *s--; // dst 文字列を末尾から順にコピー
}
for(int i = 0; i < slen; ++i) {
*dst++ = *src++; // 空けた領域に src 文字列を順にコピーする
}
}
解説:
void my_strins(char *dst, const char *src)
{
int dlen = strlen(dst); // dst 文字例長
int slen = strlen(src); // src 文字例長
for(int i = dlen + 1; --i >= 0;) {
dst[i+slen] = dst[i]; // dst を src の文字数分だけ後ろにずらす
}
for(int i = 0; i < slen; ++i) {
dst[i] = src[i]; // 空けた領域に src 文字列を順にコピーする
}
}
解説:
前: | 次: