Отправить 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', когда получите его!