`strcpy(buf, "hello")` копирует строку `"hello"` — символы `'h'','e'','l'','l'','o'` и завершающий нулевой байт `'\0'` — в память, начиная по адресу `buf`. Ключевые моменты: - Длина полезных символов: 555. Включая `'\0'` нужно места: 666. - Требование: `buf` должен указывать на записываемую область минимум в 666 байт; иначе — буферное переполнение и неопределённое поведение. - Возвращаемое значение: указатель на `buf`. - Безопасные альтернативы: выделить буфер нужного размера (например, `char buf[666];`), либо использовать `snprintf(buf, size, "%s", "hello")`, либо при известной длине `memcpy(buf, "hello", 666)`. `strncpy` тоже применяется, но требует осторожности из‑за особенностей заполнения/отсутствия завершающего нуля.
Ключевые моменты:
- Длина полезных символов: 555. Включая `'\0'` нужно места: 666.
- Требование: `buf` должен указывать на записываемую область минимум в 666 байт; иначе — буферное переполнение и неопределённое поведение.
- Возвращаемое значение: указатель на `buf`.
- Безопасные альтернативы: выделить буфер нужного размера (например, `char buf[666];`), либо использовать `snprintf(buf, size, "%s", "hello")`, либо при известной длине `memcpy(buf, "hello", 666)`. `strncpy` тоже применяется, но требует осторожности из‑за особенностей заполнения/отсутствия завершающего нуля.