PDA

Visualizza la versione completa : [C/C++]: Conoscere il percorso del file .exe


metal_prog
25-01-2008, 16:29
Scusate, ma vorrei sapere se un programma è in grado di conoscere autonomamente il suo percorso, indipententemente da che cartella lo metto o come lo rinomino...

se può... mi sapreste dire come? :zizi:

oregon
25-01-2008, 17:17
printf("%s\n", argv[0]);

metal_prog
25-01-2008, 17:30
:D ...

pensavo che argv fosse solo per i parametri passati all'applicazione... che figure... :zizi:

xam85reBanned
25-01-2008, 18:31
difatti è così.
Ma il PRIMO parametro che viene sempre passato in modo automatico al programma è la sua path assoluta :zizi: :zizi: :D

metal_prog
25-01-2008, 18:41
Questo mi serviva per provare se risucivo a copiare un eseguibile senza modificarlo (o anche spostarlo), così ho pensato di porvare a far si che il porgramma copiasse se stesso... ma non funziona: sebbene le dimensioni sono identiche la nuova applicazione è impossibile da eseguire... :(
Questo è il codice (Dev-C++):
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
FILE *src, *des;
int c;
src=fopen(argv[0], "r");
des=fopen("C:\\Nuovo.exe", "w");
while((c=getc(src))!=EOF)putc(c, des);
fclose(src);
fclose(des);
exit(0);
}

...

oregon
25-01-2008, 19:45
Devi aprire i file in binario ...

src=fopen(argv[0], "rb");
des=fopen("C:\\Nuovo.exe", "wb");

MItaly
25-01-2008, 19:54
E comunque tutte quelle chiamate a getc e putc sono piuttosto lente (anche se, copiando file piccoli, la cosa potrebbe passare inosservata): ti conviene usare la fread e la fwrite con un buffer di qualche KB.

metal_prog
25-01-2008, 20:16
Grazie mille :)

Loading