Отправить NSString с \0

Я пытаюсь отправить строку, оканчивающуюся на \0, в сокет tcp, но кажется, что \0 никогда не достигает своего места назначения.

Используя этот код:

NSString* s=@"<b/> \0_";

uint8_t *buf = (uint8_t *)[s UTF8String];

int resCode = [outputStream write:buf maxLength:strlen((char *)buf)];

Я, кажется, только отправить @"<b/> ", Вероятно, \0 рассматривается как конец uint8_t,

Может кто-нибудь сказать мне, как это должно быть сделано??

2 ответа

Решение

Конечно, он отправляет его без \0. strlen вернет вам длину строки, не считая нулевых терминаторов. Измените это на что-то вроде

[outputStream write:buf maxLength:(strlen((char *)buf) + 1)]

Почему вы хотите отправить символ ']0] в вашей строке.....

Разве вы не можете использовать любой другой символ... потому что символ '\0' всегда обрабатывается как завершающий символ!

И если вы действительно хотите отправить его таким образом, отправьте другого персонажа и сопоставьте его с '\0', когда получите его!

Другие вопросы по тегам