Ci sono un sacco di problemi, ad esempio perché usi una variabile di tipo intero per aprire un file? Dovrebbe essere FILE *f.
Perché non controlli mai il risultato della funzione fopen() per vedere se l'apertura del file è avvenuta correttamente?
Inoltre, a mio avviso, è sconveniente usare una stringa per quel che vuoi fare tu...
Non conosci la dimensione della stringa a priori e quindi potresti essere sempre soggetto a buffer overflow.
Il primo modo che mi viene in mente sarebbe questo
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f;
char c;
f=fopen("/home/sergio/esempio.txt","w");
if(f==NULL)
{
printf("Errore, impossibile aprire il file!\n");
exit(1);
}
printf("Scrivi quattro cazzate a caso che appariranno nel file esempio.txt,.\n");
printf("Per terminare l'input correttamente premere Ctrl+z su Windows o Ctrl+d per Unix.\n");
while((c=getchar())!=EOF)
{
fprintf(f,"%c",c);
}
fclose(f);
return 0;
}