You are getting lucky. It just so happens that there are 0 bytes lying around in memory that terminate your strings. The compiler DOES automatically add a 0 at the end if you do this:
char testchar1[] = "50";
But not if you declare it your way.
--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, light sensor, potentiometers, pushbuttons
The C compiler sees a "char" as really just a small integer. So:
char stuff[] = {'0', '1'};
simply says that you want an array of small integers, and you want two of them. It doesn't know you're going to eventually interpret those integers as textual characters.
Now this:
char stuff[] = "01";
says you want an array of small integers but you want three of them, since initializing with a string says you want a string!
--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, light sensor, potentiometers, pushbuttons