Функция _wfopen_s() не открывает файл, если в пути присутствуют символы юникода (в данном случае это UTF-16 LE, как я понял). Как видно на скриншотах, строка сгенерировалась правильно и файл по указанному пути существует. Однако, выдаётся код ошибки 2.
Здесь сказано, что это значит No such file or directory.
Оба варианта - не такие, как написано в коде у тебя:
\uFE0F\u2620
Я думаю, что на скриншоте между \\ и черепом-с-костями есть подозрительное “пустое” пространство, которое является на самом деле лишним символом.
«Universal character names are formed by a prefix \U followed by an eight-digit Unicode code point, or by a prefix \u followed by a four-digit Unicode code point.»
Это потому что я коды смотрел в HEX-редакторе. Там было написано 20 26 0F FE. Проверил - не работает. Я понял, что порядок байт(ов) неправильный. Поменял местами - 0F FE 20 26 - не работает. Поменял вот так FE F0 26 20 - заработало (символ стал виден, но файл не открывается). На этом моменте мозг отказался продолжать работать по причине ошибки segmentation fault. Почему тогда символ стал виден, если код по факту неправильный? Почему такие подставы? Хотя, это наверное какой-нибудь UTF-16 BE и вижуалка его поняла. А у файла имя в UTF-16 LE. Или наоборот. Тогда всё понятно.
Короче, опять протупил как обычно.
И вообще я эту черепушку из виртуальной машины с линуксом скопипастил Там UTF-8. Я, почему-то, был уверен, что при вставке винда сама в нужный формат преобразует Совсем забыл, что имена файлов тоже могут иметь разную кодировку. Точнее, это первый раз, когда с этим столкнулся.