mbartman: Your modification does not make much sense in this context - *a and a[0] are equivalent in C/C++.

Sheefo: Your code is absolutely correct. The reason for the problem is a bug in the lite-C compiler. The line

*a = 'f';

writes an integer into memory, not a char. Therefore the 'f' and three zeros are written, which truncates your string behind the 'f'.

This will be fixed in the next release. Thank you for finding this bug.

Workaround: memset(a,'f',1);