Envoyer un NSString avec \ 0
-
27-09-2019 - |
Question
Je suis en train d'envoyer une chaîne terminée par \ 0 à une prise tcp mais il semble que le \ 0 ne parvient jamais à sa destination.
En utilisant ce code:
NSString* s=@"<b/> \0_";
uint8_t *buf = (uint8_t *)[s UTF8String];
int resCode = [outputStream write:buf maxLength:strlen((char *)buf)];
il me semble que d'envoyer @"<b/> "
. Probablement le \0
est considéré comme la fin de la uint8_t
.
Quelqu'un peut-il me dire comment il faut le faire ??
La solution
Bien sûr, il envoie sans \ 0. strlen
vous renvoie la longueur de la chaîne, sans compter null terminateurs. Changez-le à quelque chose comme
[outputStream write:buf maxLength:(strlen((char *)buf) + 1)]
Autres conseils
Pourquoi voulez-vous envoyer « ] 0] caractère dans votre chaîne .....
Tu ne peux pas utiliser tout autre caractère ... parce que « \ 0 » est toujours traité comme caractère de fin!
Et si vous voulez vraiment envoyer cette façon puis envoyer un autre caractère et la carte à « \ 0 » quand vous receiv le!