Вы должны удалить любой мусор из вашего ввода, который не является частью имени файла до , передавая его basename()
, а не после.Это относится не только к \n
, но и к кавычкам, разделителям полей и т. Д., Которые являются частью вашего формата данных, а не частью имени файла.Если имена файлов могут содержать произвольные символы и есть какой-то способ избежать их в вашем формате данных, вы также захотите удалить их.
Кстати, строго говоря, я считаю, что изменение строки может привести к неопределенному поведениювозвращается basename
.Это не обязательно указатель на исходную строку.