Task leOS, strano problema.

quando usi " " il compilatore aggiunge sempre /0 riservando il giusto spazio.

ciò non avviene con lo ' ', che però non salva una stringa ma un carattere solo (se ci metti più caratteri CREDO che li sommi)

quindi il test 1 potevi farlo anche:

char testo3[4];
char prova4 = 'p'; //se siamo fortunati prova4 si trova nella ram subito dopo test3, quindi possiamo verificare l'overflow!

println("%c\n", prova4 );

testo3[0] = '1';
testo3[1] = '2';
testo3[2] = '3';
testo3[3] = '4';
//andiamo un pò nel regno dell'overflow
testo3[4] = '0';

println("%c\n", prova4 ); //venghino siori e siore, prova4 modificata senza trucco e senza inganno!

testo3[10] = '\0';//assicuriamoci di non andare in overflow di ram va.. forziamo il tappo a 10 caratteri

println("%s", testo3); //quì stampa 1234 e del garbage! se la ram èp stata assegnata contigua, il primo carattere di garbage è prova4!

il secondo test invece non ha senso; sizeof(testo) ti ritorna il numero di byte usati dal PUNTATORE testo, non la dimensione della stringa / array; in c non esiste alcun metodo per conoscere la dimensione di un array, a meno che te stesso non ne tenga conto o con un contatore, o con un carattere di tappo (tipo \0)