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?![]()
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?![]()
printf("Programmazione in C!");
cout<<"Programmazione in C++!";
printf("%s\n", argv[0]);
No MP tecnici (non rispondo nemmeno!), usa il forum.
...
pensavo che argv fosse solo per i parametri passati all'applicazione... che figure...![]()
printf("Programmazione in C!");
cout<<"Programmazione in C++!";
difatti è così.
Ma il PRIMO parametro che viene sempre passato in modo automatico al programma è la sua path assoluta![]()
![]()
![]()
-----
101110101011101111100000
-----
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);
}
...
printf("Programmazione in C!");
cout<<"Programmazione in C++!";
Devi aprire i file in binario ...
src=fopen(argv[0], "rb");
des=fopen("C:\\Nuovo.exe", "wb");
No MP tecnici (non rispondo nemmeno!), usa il forum.
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.
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie mille![]()
printf("Programmazione in C!");
cout<<"Programmazione in C++!";