LINUX.ORG.RU

C строчка с нулями


0

2

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


Передаю буфер POST запросом:
char *c = «some\0\0\0\0thing\0\0»
Нужно его полностью передать. Использую curl:

curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, «data»,
CURLFORM_COPYCONTENTS, ptr,
CURLFORM_END)

Так вот в данном случае ptr ищет \0 в строчке и шлет запрос. Дело в том, что это не совсем строчка а набор бинарных данных. По этому \0 может там быть где угодно. Думаю как бы его передать....


Кодируй двоичный ноль как последостальность символов «\0». А обратный слеш кодируй как «\\». На принимающей стороне делай обратное преобразование.

geekless ★★
()

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

есть. в своём сообщении вы его и используете:

любой символ можно записать как '\012', где 012 - восьмеричная константа.

если встретился слеш, его записывают так: '\\'. такому преобразованию подвергаются все символы, которые плохо передаются (например в запросе POST строчки делятся \r\n)

drBatty ★★
()
Ответ на: комментарий от anonymous

>UTF8 наше всё.
Напомни мне, что умеет работать напрямую с UTF-8 в C. Хотя бы разбивка, поиск по строке, ucase/lcase, isalnum.

x3al ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.