Namara

毎日コード。手助けなし。

2026-08-21

buffer.c

#include <string.h>

int main(void) {
    char buf[6];
    const char *name = "namara";

    for (int i = 0; i <= strlen(name); i++) {
        buf[i] = name[i];
    }
}

このコードはbufを1バイトあふれさせています。原因を見つけ、最小限の変更で直してください。

答え

終端文字の分の領域を確保します:char buf[7];"namara"は6バイトにNULを加えて7バイト必要です。ループの<=自体は正しく — NULもコピーするつもりで書かれています — しかしbufがそれを受け取るには1バイト小さすぎました。