Yeditepe Üniversitesi Bilgisayar Topluluğu

Ekim 28, 2008

C’de konsoldan parametre girmek

Kategori: C/C++, Genel — xaph @ 10:47 am
Tags: ,

Operating systems ödevimi yaparken ihtiyacım olan ve bu güne kadar hiç kullanmadığım bir olayla karşılaştım C programlama dili üzerinde.

Eğer programımıza komut satırında çalıştırırken parametre girmemiz gerekirse bu işi nasıl yaparız?

Cevabı internette biraz araştırma yaptıktan sonra şu ana kadar parametresini hep void ile doldurduğum main fonksiyonuna parametre girmekle yapılacağını öğrendim. Şimdi bu iş nasıl gerçekleşiyor bakalım.

Örnek programımızın adı program.c olsun. program.c içerisinde main fonksiyon prototipimizi şu şekilde yazalım:

int main(int argc, char * argv[])

argc ve argv sıklıkla kullanılan değişken isimleridir. Tabi ikisi de değişken olduğu için isimlerini dilediğiniz şekilde değiştirebilirsiniz. Ardından programımızı gcc ile derleyelim:

xaph@linux$ gcc program.c

Son olarak ise programımızı çalıştırırken girmek istediğimiz değişkenleri girelim:

xaph@linux$ ./a.out degisken1 degisken2 degisken2

Bu şekilde çalıştırılan programımızda argc konsoldan girilmiş olan toplam input sayısını tutar. Bizim örneğimiz için bu değer 4tür. Main fonksiyonuna girmek istediğiniz değişkenler ise argv string arrayinde tutulmaktadır. argv[0] programımızın adını tutar. argv[1] den argv[3] e kadar olan dizi ise sırasıyla girdiğimiz degisken1, degisken2, degisken3 değerlerini tutar. Bu değişkenleri programınız içerisinde dilediğiniz gibi kullanabilirsiniz.

Konsoldan integer girişi:
Şu ana kadar girdiğimiz ve kullanmak istediğimiz değişkenler string veri türündeydi. Peki biz programımıza tamsayı girdisi yapmak istersek ne yapmalıyız?

Main fonksiyonunda kullandığımız prototip önceden tanımlı bir durumdadır. Dolayısıyla ikinci parametre olan char* veri türünde değişiklik yapamıyoruz. Bu da gireceğimiz her sayının karakter dizesi olarak tutulması anlamına geliyor. String veri türündeki bir tamsayıyı nümerik veri türlerine çevirmek için standart C kütüphanesinde atoi, atol, atof, strtol gibi fonksiyonlar bulunmakta. En çok kullanılanı olduğu için kısaca atoinin kullanıldığı bir örnek koda bakalım.

#include <stdio.h>
int main(int argc, char* argv[])
{
    int i;
    i=atoi(argv[1]);
    printf("%d", i);
}

Bu şekildeki bir programı derleyip parametre olarak integer değeri girdikten sonra, girdiğiniz değeri çıktı olarak basacaktır. Tabi çıktı sayının integer veri tipine çevrilmiş haliyle basılır.

Artık tek yapmanız gereken konsoldan aldığınız parametreleri istediğiniz hale getirip kullanmak. İyi kodlamalar.

WordPress.com'dan blog alın.