Namaran

Code daily. Without assist.

2026-08-27

copy_str.c

void copy_str(char *dst, const char *src) {
    /* write this: copy the NUL-terminated string src into dst
       (dst has enough room), including the terminator */
}

copy_strを実装してください。NUL終端文字列srcdstにコピーします(dstには十分な領域があるものとします)。終端の'\0'も含めてコピーしてください。

Reference
void copy_str(char *dst, const char *src) {
    while ((*dst++ = *src++) != '\0') {
    }
}

*dst++ = *src++はC言語の定番の後置インクリメントイディオムです — 代入は1文字ずつコピーしつつ、その代入結果(コピーした文字そのもの)をwhileの条件に使います。両方のポインタは代入のあとの後置インクリメントによって次の文字へ進みます。コピーした文字が'\0'になった時点でループが終わり、終端も含めてコピーが完了しています。これは参考実装であり、唯一の正解ではありません — 添字を使った素朴なループでも同じことができます。