Beh ... per esempio, fare una cosa del genere

f->piva=atoi(argv[0]);

che senso ha, visto che argv[0] contiene il percorso e il nome dell'eseguibile?

E anche cose come

f->Nome=(char*)argv[2];

mi lasciano perplesso. Non stai infatti copiando la stringa ma semplicemente il puntatore ...