gcc будет представлять аргумент во втором случае в виде массива wchar_t
(с использованием префикса L"
), в то время как fgetws
возвращает массив wchar_t
(либо UCS-2)или UCS-4, в зависимости от платформы: обычно первый, если вы используете Windows).
Однако данные, прочитанные из файла, могут быть различными , потому что:
- порядок байтов отличается тем, что
- функция
fgetws
ожидает (или не ожидает) метку порядка байтов - и фактические данные не совпадаютего ожидания.
Это различие можно увидеть по дампу (hexdump или od) файла данных и печати фактических данных, считанных / использованных в тестовой программе, в виде массива чисел.Поскольку эти широкие символы используют многобайтовую кодировку для своего внешнего представления, при несоответствии в порядке следования байтов вы увидите мусор.
Например, внешний файл может быть закодирован какUTF-8, в то время как (это звучит как MinGW), fgetws
будет ожидать только UTF-16 (или наоборот).Но, начав с того, что вы точно увидите, как выглядят числа , вы увидите проблему.