Прежде всего, у меня есть функция, где у меня есть знаки, хранящиеся в unsigned char*
типа. Например, для Abcdef!?
это [65 0] [98 0] [99 0] [100 0] [101 0] [102 0] [33 0] [63 0]
2 байта за знак в Юникоде.Почему printf отображает только первую букву?
Когда я использую for(unsigned char i=0; i<17; i++) printf("%c", pointer[i]);
, все в порядке, оно показывает Abcdef!?
. Но когда я использую printf("%s" pointer);
, он дает мне только A
и ничего больше. Не могли бы вы рассказать мне, почему?
второе значение равно 0, это массив 'unsigned char *': 'printf' останавливается. Можете ли вы показать нам [mcve], пожалуйста? –
Посмотреть все эти '0' байты? '% s' предназначен для печати c-строки, которая заканчивается нулем; он правильно называется * Null Terminated Byte String *. Таким образом, вы получаете только первый символ перед первым байтом '0', а затем перестаете читать. – BoBTFish
Когда вы говорите «система Unicode», вы имеете в виду UTF-16 или что-то подобное, не так ли? Сам Unicode не является кодировкой, а просто отображает символы в числа. –