Halo, возможно, вам не хватает включения string.h, как говорили некоторые из других авторов. Кроме того, копирование строки, которую вы выполняете в этом поле, приведет к переполнению буфера, если dir_path_name больше, чем d_name.
Я бы вышел из состояния здоровья и предложил бы вам сделать следующее:
- явно проверяет, меньше ли размер исходного буфера или равен его месту назначения (и, черт возьми, ошибается, если это не так),
- используйте memcpy вместо str * cpy
- Вы установили остаток от sdata_ptr-> request_queue [index] .d_name в 0 (безопасное воспроизведение)
Используя ваш пример кода, он будет выглядеть следующим образом:
/* dir_path_name should be null-terminated for this to work */
size_t path_len = strlen(dir_path_name);
char * dest = sdata_ptr->request_queue[index].d_name;
size_t n = strlen(dest);
if( path_len >= n )
{
... err out, no workie
}
memcpy(dest, dir_path_name, n );
if( path_len < n )
{
memset((dest+n),0,n-path_len);
}
Надеюсь, это поможет.