Вероятно, name
заканчивается на \r\n
, потому что он был создан на Windows, а затем прочитан в подсистеме Linux или в режиме rb
. Изменение "\n"
в strcspn
cal на "\r\n"
, вероятно, решит проблему.
Вы должны следить за окончанием строки Windows, если вы работаете в смешанной системе. В подобных случаях часто бывает полезно использовать такой инструмент, как hd
, который печатает файлы как в шестнадцатеричном, так и в символьном формате.