Будьте осторожны, используя strcpy
.Он не выполняет проверку границ, поэтому, хотя path
- это всего лишь char[1]
, он попытается скопировать в него все directory
.Вероятно, это ваша ошибка сегмента.
У вас есть много вариантов, как создать строку.Вот длинная статья SO об эффективности конкатенации строк в C ++:
Эффективная конкатенация строк в C ++
Если вы используете C ++, есть ли причина, по которой вы не можете простоиспользовать встроенную библиотеку string
с оператором +
?Например:
string path;
//...
path += directory;
path += "/";
path += entry->d_name;
//etc.
Использование класса string
может быть немного менее эффективным, но это даст дополнительное преимущество, помогая вам избежать проблем переполнения буфера и исключений памяти, таких как ошибка сегментации, которую вы получаете (яЯ не говорю, что string
избежит всего этого, но это облегчит вашу жизнь).
Также был другой предыдущий пост SO о том, как создать строку каталога в C ++:
c ++ как создать каталог из пути