Ah scusa ... avevo confuso con la prima versione del codice ...

L'unica cosa che mi sembra sbagliata è la

char buff[3]="abc";

che dovrebbe essere

char buff[4]="abc";

ma non ho provato il codice ...