infatti...

Ogni stringa in c termina col carattere '\0'

Quando printf stampa la tua stringa stampa tutti gli elementi dell'array finché non raggiunge il carattere '\0' che nella tua stringa non c'è.

Quando inizializzi una stringa facendo per esempio:

char stringa[]="ciao";

crei un vettore di QUATTRO caratteri dei quali l'ultimo è '\0'. In pratica equivale a scrivere:


char stringa[]={ 'c' , 'i' , 'a' , 'o' , '\0' };

Nella tua stringa manca appunto il carattere '\0' finale che permette a printf di riconoscere la fine della stringa all'interno dell'array. Spero di essere stato chiaro