strrchr()
возвращает указатель на последнее вхождение.Вычтите из этого указатель на начало строки, и вы получите длину.
strncpy(name,long_name, strrchr(long_name,'.') - long_name);
Тем не менее, не null завершает name
автоматически.Сначала убедитесь, что вы инициализировали его для всех \0
.Также обратите внимание, что strrchr()
возвращает NULL
, если символ не существует.Вы, вероятно, хотите переместить его за пределы strncpy()
и убедиться, что у вас есть правильный указатель.
char *last = strrchr(long_name,'.');
if (last != NULL)
strncpy(name,long_name, last - long_name);
Редактировать: Я предполагаю, что вы опечаталиимя переменной в strrchr()
в вашем посте - должно быть long_name