sto facendo un porting di un software in C da HPUX a Linux (premetto che di C conosco poco)

un codice del genere (semplice esempietto da me creato)

char string1[4];
string1[0]='s';
string1[1]='d';
string1[2]='d';
string1[3] = '\0';

char string2[1];
string2[0] = 'a';
printf("\n%s\n", string2);

char string3[2];
string3[0] = 'a';
string3[1] = '\0';
printf("\n%s\n", string3);

sotto LINUX genera

asdd
a

mentre sotto HPUX

a
a

come se sotto Linux, la mancanza del carattere '\0' in string2 "sporcasse" la stessa stringa con il contenuto di string1, cosa che non accade sotto HPUX; quando invece si chiude con '\0' come nel caso di string3, il comportamento è uguale

che mi consigliate?
visto che ho trovato nel codice degli array non chiusi con \0

Grazie