08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

argv[2] program ismini izleyen ikinci argümanı gösterir.<br />

argv[2] = "sample.c";<br />

argv[argc] yani argv[3] ise NULL adresini gösterir.<br />

Bir işlevin, göstericiyi gösteren gösterici (pointer to pointer) parametresinin iki ayrı<br />

biçimde tanımlanabileceğini anımsayın:<br />

void func(char **ptr);<br />

void foo(char *ptr[]);<br />

Her iki işlevin de parametre değişkeni char türden göstericiyi gösteren bir göstericidir. Bu<br />

durumda, komut satırı argümanlarını işleyecek bir main işlevinin de göstericiyi gösteren<br />

gösterici olan argv parametresi, iki farklı biçimde tanımlanabilir:<br />

int main(int argc, char **argv)<br />

{<br />

/***/<br />

}<br />

int main(int argc, char **argv)<br />

{<br />

/***/<br />

}<br />

Komut satırı argümanları boşluklarla birbirinden ayrılmış olmalıdır. Yukarıdaki örnekte<br />

program<br />

ls -lsample.c<br />

biçiminde çalıştırılırsa<br />

argc, 2 değerine sahip olurdu.<br />

Komut satırı argümanları, işletim sistemi tarafından komut satırından alınarak derleyicinin<br />

ürettiği giriş kodu yardımıyla main işlevine gönderilir.<br />

Aşağıda komut satırı argümanlarını ekrana basan örnek bir program görüyorsunuz:<br />

#include <br />

int main(int argc, char *argv[])<br />

{<br />

int i;<br />

for (i = 0; i < argc; ++i)<br />

printf("argv[%d] : %s\n", i, argv[i]);<br />

}<br />

return 0;<br />

main işlevinde yer alan döngü deyimi aşağıdaki biçimde de yazılabilirdi:<br />

for (i = 0; argv[i] != NULL ; ++i)<br />

printf("argv[%d] : %s\n", i, argv[i]);<br />

Komut satırından çalıştırılan programlar genellikle, önce girilen argümanları yorumlar ve<br />

sınar. Örneğin bir dosyanın kopyasını çıkarmak üzere, ismi kopyala olan bir programın,<br />

komut satırından çalıştırılmak istendiğini düşünelim. Program, komut satırından<br />

kopyalanacak dosyanın ismini ve yeni yaratılacak dosyanın ismini istesin:<br />

446

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!