Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C/C++]: Conoscere il percorso del file .exe

    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++!";

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    printf("%s\n", argv[0]);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ...

    pensavo che argv fosse solo per i parametri passati all'applicazione... che figure...
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  4. #4
    difatti è così.
    Ma il PRIMO parametro che viene sempre passato in modo automatico al programma è la sua path assoluta
    -----
    101110101011101111100000
    -----

  5. #5
    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++!";

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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.

  7. #7
    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.

  8. #8
    Grazie mille
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.