Newsgroup: it.comp.lang.c++
Titolo: !! GET COMMAND LINE ??? !!

> Come si fa a leggere i parametri dalla riga di comando?
Passi alla funzione mail, nell'ordine qui sotto, due parametri:
int argc -numero parametri-
int **argv -puntatore a un array di stringhe che sono i parametri-
esempio:
void main(int argc; char **argv)
{
...
}
Cordialmente,
-- 
Gianni Rondinini, programmer and designer at Pierre s.n.c.
e-mail: 
pie...@mail.asianet.it
homepage: 
http://www.geocities.com/Eureka/Plaza/7153
Red Hat Linux user since 9/25/97
Windows NT Server user since 9/19/97
BREAKFAST.COM
 halted... cereal port not responding!

--
Alla tua main() fai arrivare due argomenti in questo modo:
main(int argc, char **argv)
 {
 int n=0;
for(n=0; n<argc; n++) {
    printf("argomento n. %d = %s\n", n, argv[n]);
 }
}
argc contiene il numero di parametri passati nella riga comando, e vale al
minimo 1,
infatti argv[0] contiene il nome dell'eseguibile lanciato.
argv contiene invece i vari campi della riga comando.
ES:
se lancio: MYPRG pera mela "banana fragola"     <----- occhio ai doppi apici
ottengo argc = 4
argv[0] = "MYPRG"
argv[1] = "pera"
argv[2] = "mela"
argv[3] = "banana fragola"
e' possibile inoltre avere anche tutte le stringhe impostate
nell'environment (i SET dell'autoexec.bat per intenderci) in questo modo:
main(int argc, char **argv, char **envp)
{
....
}
Buon lavoro!!!
================
       _/
    _/_/_/
     _/
    _/  _/
    _/_/
tec...@login.it
================

      `-----------------------------------------------------------------'

Occhio che il parametro envp da te indicato non =E8 standard e non =E8
supportato da tutti i sistemi. E sui sistemi su cui =E8 supportato, non =
lo
=E8 da tutti i compilatori.=20
Se un tuo programma deve accedere alle variabili d'ambiente =E8 molto
probabile che abbia bisongo di accedere a delle variabili specifiche. =
In
tal caso =E8 meglio definire una routine generica, tipo:
 char * GetEnvironmentString( const char * VarName, char * result,
size_t resultSize, const char *defaultVal);
che accede all'environment alla ricerca di una variabile con il nome
specificato in VarName e ne copi il contenuto in result (troncandolo a
resultSize-1 per permettere l'aggiunta del terminatore) e se non lo
trova copia invece il contenuto di defaultVal.=20
Questa routine sar=E0 implementata in maniera compiler specific.=20
=C8 sempre meglio separare tutte le attivit=E0 compiler o system =
specific in
un apposito modulo. In questo modo un cambiamento di sistema (o anche
solo di compilatore) risulter=E0 semple molto meno problematico.=20
Nei rarissimi casi in cui il tuo programma manipola l'environment e/o =
ha
bisogno di accedere a tutte le variabili ivi gestite, puoi al limite
scrivere una routine ompiler dependent che ti restituisca il parametro
envp senza prenderlo dal main ma ricreandolo come buffer statico =
globale
(meglio se lo restituisce con un paio di const, per sicurezza).
---
     Andrea Ferro
SW.AN. Technologies s.a.s.
Merate (Lc)          Italy
	-----Original Message-----
	From:	Fabio BANFI [
SMTP:tec...@login.it
]
	Posted At:	Thursday, November 06, 1997 1:10 PM
	Posted To:	c++
	Conversation:	!! GET COMMAND LINE ??? !!
	Subject:	Re: !! GET COMMAND LINE ??? !!
	=85
	e' possibile inoltre avere anche tutte le stringhe impostate
	nell'environment (i SET dell'autoexec.bat per intenderci) in
questo modo:
	main(int argc, char **argv, char **envp)
	=85