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 文字列を順にコピーする } }
解説:
前: | 次: