Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Alessandro Pellizzari Newsgroups: it.comp.os.linux.development Subject: Re: Linea di comando per gcc Date: Sat, 3 Jun 2017 14:38:20 +0100 Lines: 38 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Trace: individual.net gnqEzXKv3Bhp12NPsD9sdAvmnS1HeWuw+7DRUfQlwY0Cj3b70= Cancel-Lock: sha1:btdw+X1grwWiJoAuPfhxKPOlc4o= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 In-Reply-To: Content-Language: en-GB Xref: csiph.com it.comp.os.linux.development:31 On 03/06/17 09:38, guido84 wrote: > Si' ma il fattaccio e' che io il C non l'ho mai studiato come > teoria, lo imparo man mano facendo programmi. "Il Linguaggio C" di Kernighan e Ritchie sono 150 pagine, se non ricordo male, e contiene praticamente tutta la base del linguaggio (librerie escluse, per intenderci) >> ma credo ti basti leggere >> argv[1] (dopo aver controllato che argc sia >2) > > Sembra che argc corrisponda a $2, e' andato tutto benissimo, ma mi > tocca dare il comando: "./prova 10 qualsiasi_cosa". No. argc e` il numero di parametri sulla command line argv e` un array di stringhe, che in C si puo` rappresentare come un puntatore a una lista di puntatori (da cui il doppio *) Se scrivi "./prova 10 qualsiasi_cosa" argc = 3 argv = ["./prova", "10", "qualsiasi_cosa"] argv[0] e` sempre il comando che hai dato, quindi il primo parametro e` argv[1] e via via i successivi. Se accedi a argv[3], in questo caso, stai puntando a un'area di memoria non inizializzata, quindi ti rendi vulnerabile ad attacchi di code injection. Bye.