Это вызов стандартной функции копирования C-строки: копирует символы из литерала `"Hello, world!"` в буфер `s`, включая завершающий нулевой символ `'\0'`. Требование к буферу: он должен вмещать длину строки плюс один байт для `'\0'`. Для данного литерала strlen("Hello,world!")=13 \text{strlen}("Hello, world!") = 13 strlen("Hello,world!")=13 поэтому нужен буфер минимум 13+1=1413 + 1 = 1413+1=14 байт. Примеры безопасного использования: - Статический буфер: `char s[14]; strcpy(s, "Hello, world!");` - Динамический буфер: `char *s = malloc((strlen("Hello, world!") + 1) * sizeof(char)); strcpy(s, "Hello, world!"); /* ... */ free(s);` Важно: если `s` меньше чем 141414 байт, поведение — неопределённое (буферный переполнение). Для безопасности используйте альтернативы: `snprintf`, `strlcpy` (если доступна) или проверяйте длину перед копированием. Также подключите ``.
strlen("Hello,world!")=13 \text{strlen}("Hello, world!") = 13 strlen("Hello,world!")=13
поэтому нужен буфер минимум
13+1=1413 + 1 = 1413+1=14
байт.
Примеры безопасного использования:
- Статический буфер: `char s[14]; strcpy(s, "Hello, world!");`
- Динамический буфер:
`char *s = malloc((strlen("Hello, world!") + 1) * sizeof(char)); strcpy(s, "Hello, world!"); /* ... */ free(s);`
Важно: если `s` меньше чем 141414 байт, поведение — неопределённое (буферный переполнение). Для безопасности используйте альтернативы: `snprintf`, `strlcpy` (если доступна) или проверяйте длину перед копированием. Также подключите ``.