Carácter NUL y cotización ANSI-C

Carácter NUL y cotización ANSI-C

Estoy intentando enviar una cadena binaria a un programa usando cadenas entre comillas ANSI-C. Esto funciona bien:

echo $'\x23\x51\x66\x39\x01\x5f\x2f' | cat -v
# output: #Qf9^A_/

Sin embargo, si tengo un carácter NUL (código ASCII 0) en los datos, termina la cadena:

echo $'\x23\x00\x66\x39\x01\x5f\x2f' | cat -v
# output: #

Soy consciente de que las cadenas en el lenguaje C terminan en nulo, por lo que supongo que se aplica una restricción similar a este método de comillas.

¿Hay alguna manera de enviar ASCII 0 a mi programa?

Respuesta1

Intente usar printfen lugar de echo.

$ printf "\x23\x00\x66\x39\x01\x5f\x2f" | od -c
0000000   #  \0   f   9 001   _   /

información relacionada