Domanda

Ciao Sto cercando di utilizzare il nome del file eseguibile e una stringa di utilizzo, sto usando argv[0] a tale scopo, ma al posto del nome del file eseguibile in sé mi dà il percorso completo ad esso.

C'è un modo per ottenere solo il nome del file eseguibile?

È stato utile?

Soluzione

Basta cercare l'ultimo /.

const char *exename = strrchr(argv[0], '/');
if (exename)
    // skip past the last /
    ++exename;   
else
    exename = argv[0];   

Altri suggerimenti

Per quanto ne so, (su Linux, almeno) è sufficiente estrarre il nome del file eseguibile dal char * te.

Il modo più semplice per farlo è quello di utilizzare basename(argv[0]), che si può ottenere inserendo "libgen.h".

Se è disponibile sulla vostra piattaforma, c'è una funzione di char *basename(char *path). Vedere basename documentazione .

Basta usare l'ultima parte del percorso corde. Una combinazione di una chiamata a strrchr (ottenere ultimo delimitatore di percorso) e per esempio strcpy o simile per copiare la parte della scorsa delimitatore di percorso per porre fine

È possibile utilizzare getprogname() se il nome del programma è impostato dal sistema operativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top