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バイト小さすぎました。