|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Funzione dos in c per restituire path dove si trova eseguibile
Salve esiste una funzione in c o dos richiamabile in c che restituisca il path di dove si trova il file?
Grazie. Ciao. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dipende da quale compilatore usi...
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Codice:
#include <stdio.h>
void main(argc,argv)
int argc;
char *argv[];
{
int i=0,j;
do
{
if(*(argv[0]+i)=='\\')
j=i;
} while (*(argv[0]+i++)!=0x00);
*(argv[0]+j)=0x00;
printf("Il path dell'eseguibile e': %s",argv[0]);
}
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Purtroppo quello rende il path relativo...se ho l'eseguibile pippo.exe che si trova in c:\pluto\ e faccio:
x:\> c: c:\> cd pluto c:\pluto> pippo <-eseguo pippo L'output del programma sopra sarà solo pippo... |
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
Codice:
C:\>CD PLUTO C:\PLUTO>PIPPO.EXE Il path dell'eseguibile e': C:\PLUTO C:\PLUTO> |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mah...io ho fatto una prova con mingw32 e mi restituisce solo pippo.exe...
Mi pare che lo stesso giochetto lo facesse in DOS vero con i compilatori della Borland... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Allego eseguibili prodotti da Borland C++ 3.1 (TEST1.COM - DOS16) e da OpenWatcom 1.6 (TEST2.EXE - WIN32), entrambi funzionanti.
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ha lo stesso comportamento del gcc di Linux...
Mi viene da pensare che non ci sia un comportamento ben definito dallo standard... |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Che il sappia lo standard non definisce accuratamente il contenuto di argv[0], ad ogni modo l'autore della discussione cercava: "Funzione dos in c per restituire path dove si trova eseguibile". Ha specificato "DOS" e non Windows o Linux. Per DOS, che io sappia, argv[0] restituisce il path completo dell'eseguibile; e' comunque possibile che esista un compilatore C per DOS che non rispetti tale consuetudine, ma io non ne ho mai visti. Se comunque conosci un compilatore DOS con tale caratteristica mi piacerebbe dargli un'occhiata, percui ti sarei grata se me ne indicassi il nome. Grazie.
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io ti sto dicendo che quel comportamento non mi è nuovo...e mi sembra appunto di averlo incontrato ai tempi in cui lavoravo in DOS. Sinceramente non mi ricordo con quale compilatore.
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Non e' che ci siano tutti questi compilatori C per DOS, sia Borland che Watcom che Microsoft hanno sempre restituito il path completo con argv[0] (persino il Lattice C restituisce il path completo con argv[0]). Probabilmente lavoravi con qualche "astruso" compilatore C per DOS, sarebbe interessante se te ne ricordassi il nome.
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Da quello che ho sempre notato, sia su Windows che su Linux, ciò che si ha in argv[0] è il path esattamente uguale a quello usato per lanciare l'applicazione.
Se lancio un pippo.exe con: C:\prova\pippo.exe, avrò il path completo assoluto ..\pippo.exe, avrò ..\pippo.exe e così via. È chiaro che se si vuole avere il path assoluto dell'eseguibile si può: 1) Usare funzioni specifiche, es. GetModuleFileName() su Windows oppure 2) Determinare la directory corrente e ottenere il path assoluto "risolvendo" il path relativo combinato con la directory corrente.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:42.




















