cstringc-stringsnull-terminatedansi-c

String termination - char c=0 vs char c='\0'


When terminating a string, it seems to me that logically char c=0 is equivalent to char c='\0', since the "null" (ASCII 0) byte is 0, but usually people tend to do '\0' instead. Is this purely out of preference or should it be a better "practice"?

What is the preferred choice?


EDIT: K&R says: "The character constant '\0' represents the character with value zero, the null character. '\0' is often written instead of 0 to emphasize the character nature of some expression, but the numeric value is just 0.


Solution

  • http://en.wikipedia.org/wiki/Ascii#ASCII_control_code_chart

    Binary   Oct  Dec    Hex    Abbr    Unicode  Control char  C Escape code   Name
    0000000  000  0      00     NUL     ␀       ^@            \0              Null character
    

    There's no difference, but the more idiomatic one is '\0'.

    Putting it down as char c = 0; could mean that you intend to use it as a number (e.g. a counter). '\0' is unambiguous.