Во-первых, это не дубликат: Turn a C string with NULL bytes into a char array, потому что данный ответ не работает, когда char *
являются Unicode.Разделение нулевого байта Разделение строки UNICODE C
Я думаю, проблема в том, что я пытаюсь использовать кодированные символы UTF-8 вместо ASCII char *, а длина каждого символа отличается и, следовательно, это не работает:
char *Buffer; // your null-separated strings
char *Current; // Pointer to the current string
// [...]
for (Current = Buffer; *Current; Current += strlen(Current) + 1)
printf("GetOpenFileName returned: %s\n", Current);
Есть ли у кого-нибудь подобное решение, которое работает в строках Unicode?
Я уже четыре часа стучаю головой об этом. C не согласен со мной.
EDIT: Я думаю, что проблема заключается в том, что символ * теперь UTF-8, а не ASCII.
Что значит «Unicode», UTF-16? –
Я не уверен. Я получаю этот так называемый «Юникод» от этой функции: http://pastebin.com/j1pFrWPa. Название функции означает UTF-8 char *, но это меня смущает. –
Я пытаюсь сделать мою программу дружественной к тем не-ASCII буквам (акценты, русский и т. Д.), Но мне все еще нужно иметь сборщик файлов. –