li chiudi lo stream f, no lo stream tmp, devi chiuderlo con fclose(tmp); penso...