Originariamente inviato da Habdul
codice:
   if((log=fopen("log.txt","a")) == NULL){
      printf("Impossibile creare il file di log\n");
      getchar();
      exit(1);
      }

Trovi che dovrebbe creare il file nella directory dove si trova l'exe???

Come mai fa così???
Il tuo codice (questo quotato), controlla soltanto se è possiile
creare il file (se possibile lo crea), altrimenti invia a video un messaggio di errore ed esce dal programma.

Il codice che ti ho postato sopra fa esattamente quello che hai chiesto.

alla posizione "0" della variabile "speciale" *argv[]
è presente il patch assoluto all'eseguibile che stai eseguendo.

Quindi, per creare un file nella directory in cui si trova l'eseguibile, basta modificare la stringa presente in *argv[0]

sostituendo il nome dell'eseguibile .exe
con il nome del file da creare, il gioco è fatto.

per fare un test, prova a mettere delle printf() prima e dopo la routine... così visualizzi a video la striga presente in *argv[0]
prima e dopo la modifica... tale stringa verrà successivamente
passata a fopen() per creare il file nella stessa directory dell'eseguibile.