in argv[0] è sempre presente il patch assoluto all'eseguibile (compreso il nome dell'eseguibile)
quindi, basta togliere il nome di quest'ultimo dal patch,
e sostituirlo con il nome del file da creare.
es: se il patch all'eseguibile è:
C:\Documenti\mioeseguibile.exe
basta sostituire "mioeseguibile.exe"
con il nome del file da creare.
C:\Documenti\mionuovofile.txt
codice:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char fname[20], i, len;
FILE *p;
len=strlen(argv[0]);
for(i=len; i>0; i--)
if(argv[0][i]=='\\\')
{
argv[0][++i]='\0';
break;
}
printf("Inserisci il nome del file da creare: ");
scanf("%s", fname);
strcat(argv[0], fname);
p=fopen(argv[0], "w");
fclose(p);
return 0;
}