Newsgroup: it.comp.lang.c
Titolo: parametri passati per riga di comando

Mi domandavo, come si fa a gestire in C parametri passati a un
programma attraverso al riga di comasndo ?
Ad esempio ipotizzando di avere un file decritta.exe (che appunto
decritti file in formato txt gestendoli come ASCII e non come bin).
volendo passare il nome del filke da decrittare da riga di comando
cosi:
C.\decritta lettera.txt
cosa devo scrivere nel codice ? devo specificare dei parametri in
ingresso al main ? tipo void main(char *stringa)o qualcosa di simile ?
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

ingresso al main ? tipo void main(char *stringa)o qualcosa di simile ?
main() deve restituire un int.
#include <stdio.h>
main( int argc, char **argv ) 
{
    int i ;
    for ( i = 0 ; i < argc ; i++ )
    {
        puts( argv[i] ) ;
    }
}

}
Uhm ma fammi capire argc cosa continene la lunghezza della stringa
letta ?
E argv che contiene alla fine del ciclo la stringa letta ?
e se volgio passargli + di un parametro ?


 letta ?
Tempo fa ho fatto un tutorial sulla gestione dei parametri passati
agli eseguibili come argomenti opzionali; lo trovi su
ftp://cmssun1.pd.infn.it/pub/MLO/options.tar.gz
 .  Contiene una
dozzina di pagine in PostScript, il sorgente LaTeX del tutorial e tre
programmi C di esempio.  Era destinato ad un auditorio straniero, e
per questo motivo e' in inglese.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

e se volgio passargli + di un parametro ?
Glielo passi :-)
argv[0] = mioprog
argv[1] = primo_par
argv[2] = secondo_par
argv[n] ...
-- 
Rhodion
"Soft as the massacre of Suns
 By Evening's Sabres slain." 

 e se volgio passargli + di un parametro ?
Li separi da spazio sulla linea di comando e te li ritrovi in argv
contati da argc. Ma una letta al manuale no eh?
EMG

 }
Aggiungo che argc è il numero dei parametri e argv è una array di puntatori
alle stringhe che contengono i parametri.
L'ultimo elemento di argv è nullo.. che può essere utile per ottimizzare il
ciclo che ti ha postato TJK.
Perchè non aggiungiamo la domanda nelle FAQ?
--
________________________________
per rispondermi iliasba(at)
tin.it
bye Brain

contati da argc. Ma una letta al manuale no eh?
Ehm a dire il vero non sono riuscito a trovare da nessuna parte questo
argoemnto, o meglio avevoi trovato unm esempio senza commenti...ma nel
Ritchie Kernighan c'e' ? Presumo di si ma non sono riuscito a
trovarlo...qualche anima pia mi saprebbe indicare la pagina ?
Grazie a tutti


 trovarlo...qualche anima pia mi saprebbe indicare la pagina ?
Anche io ho un dubbio.  Le pagine del K&R hanno negli angoli superiori
dei numeri interi crescenti tutti diversi; quella cha ha scritto "263"
riporta uno stranissimo titolo che suona  "index".
Se cerco "argc" lo trovo in quella pagina con accanto il numero 114;
"argv" invece ha accanto i numerini 114 e 163.
Qualche anima pia potrebbe spiegarmi cosa e' un "index" e cosa
vogliono dire quei numeretti?  Grazie!


e se volgio passargli + di un parametro ?
Puoi farlo.

 Ma nel contare i parametri parte da zero o da uno ?
argv[ 0 ] contiene il nome dell'eseguibile e quindi i parametri iniziano
da argv[ 1 ].
EMG

main() DEVE restituire int.
DEVE ? Bhe guarda che se gli dai void il compiler ti compila lo stesso
(pur dandoti un warning) e il soft funziona benissimo...poi lo so che
lo standard prevede int ...infattio era una battuta rivolta a EMG :-)


riporta uno stranissimo titolo che suona  "index".
Se vado a pagina 263 (coi numeretti strani in basso trovo un altra
cosa.... comuqnue hai ragione sull'indice c'era...piccolo dettaglio io
mica lo sapevo cosa fosse argc o argv priam di ieril'altro :-)


 (pur dandoti un warning) e il soft funziona benissimo...
Funziona benissimo in quanto il compilatore č cosě gentile da mettere
lui il valore di ritorno int. Ma potresti non essere sempre cosě
fortunato... :-)
EMG

lo standard prevede int ...infattio era una battuta rivolta a EMG :-)
Il software funzionera' benissimo sulla TUA piattaforma.
Ribadisco per l'ennesima volta : main() ***DEVE*** restituire int.
Consulta le faq di comp.lang.c per maggiori chiarimenti.

Consulta le faq di comp.lang.c per maggiori chiarimenti.
Kalem.... rileggi quello che ho scritto prima..questo e' uno scambio
di battute con EMG... :-)
Lo so anch'io che se compilo col GCC in alvcune versioni sotto Linux
non fa automaticamente la conversione :-)


fortunato... :-)
Bhe certo che potevano anche fare un compilatore che correggesse
automaticamente gli errori..tipo io scrivo scnaf("%d",&pippo); e lui
mi corregge in scanf... in teoria non dovrebbe essere impossibile da
realizzare.... giocando bene si linguaggio formalli basati su grammm
context sensitive in fase di formazione dei nuclei...tu che ne pensi ?
(sanche se e' OT)


di battute con EMG... :-)
Ah, allora fatelo per e-mail.

august...@tin.it
 (Augusto Pucci) writes:

Pericolosissimo!
Dovresti guardare la voce "DWIM" (acronimo di "do what *I* mean) sul
jargon file...  In breve: Warren Teitelman, scrivendo il command
interpreter (la shell) delle macchine dello Xerox PARC ai bei tempi
del computing, aggiunse un "correttore di ortografia" alla shell;
durante il debugging, la legge di Murphy colpi' immediatamente.  Uno
dei primissimi comandi dall'ortografia sbagliata che vennero immessi
nella shell per provarla venne cambiato in "distruggi tutto il
contenuto del disco"... ed immediatamente eseguito.
Davvero vuoi che un compilatore interpreti a suo piacere quello che tu
hai scritto?


e se volgio passargli + di un parametro ?
argc contiene il numero dei parametri passati (compreso il nome del
pogramma), mentre argv come dal prototipo e' un array dei vettori carattere
che contiene gli argomenti passati (argv[0] e' il nome del programma,
argv[1] e' il primo paramentro ecc ecc.)
byebye
Vi][o
-- 
Per rispondere togliere NONSCASSA da reply-to.

hai scritto?
Mmmm ora che mi ci fai pensare...gia' ce ne metto da solo tanti
bug...senza che il compilatore faccai quello che gli pare !



Veramente io non l'avevo interpretato come tale. Ho letto una cosa
inesatta e cercavo di correggerla.
EMG

you wrote:

Enrico.... rileggi quello che ho scritto prima..questo e' uno scambio
di battute con Pucci... :-)

di battute con Pucci... :-)
 
Questa e' buona :-)))))) Comunque a parte gli scherzi grazie epr
l'aiuto che mi avete dato..alla fine a 
forza di tentativi sono riuscito a passare i parametri come volevo
dalla riga di comando al mio programmino.
