31

I have seen '\0' to be used as a delimiter in mixed binary files (UTF8 strings + binary data). Could anyone explain what '\0' means or point to a good place to study?

bancer
  • 7,475
  • 7
  • 39
  • 58

3 Answers3

31

It's the null character; more info in this Wikipedia article.

kabuko
  • 36,028
  • 10
  • 80
  • 93
20

The two-character \0 representation is used in C source code to represent the NUL character, which is the (single) character with ASCII value 0.

The NUL character is used in C style character strings to indicate where the end of the string is. For example, the string "Hello" is encoded as the hex bytes:

48 65 6c 6c 6f 00

In this case, the C compiler automatically adds the 00 byte on the end of any double-quoted string. If you wrote the constant as "Hello\0", then the C compiler would generate:

48 65 6c 6c 6f 00 00
Greg Hewgill
  • 951,095
  • 183
  • 1,149
  • 1,285
10

\0 is shorthand for \000 which is an octal character escape. In general, you can shorten any octal escape that isn't followed by an octal digit. This derives from the original C escape sequences (\n \r \t \f \v \b \000 where the latter is a character value in octal notation; ANSI added some, and \v is somewhat rare these days and many more modern languages don't implement it).

geekosaur
  • 59,309
  • 11
  • 123
  • 114