Bildiğiniz gibi UnrealIRCd, IRCServices vs. gibi yazilimlar C Dili ile yazilmis ve gelistirilmistir.
C'de diziler çok kullanışlıdır.
Dizileri tanımlarken tüm elemanlarını “0″'a eşitlemek faydalidir. Bunu yapmadığımız zaman RAM’de, dizinin tanımlandıği yerde ne bilgi varsa; ona göre işlem yapılır.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
char *Takimlar[]={
"Ankaragucu",
"Antalyaspor",
"Besiktas",
"Bursaspor",
"Eskisehirspor",
"Fenerbahce",
"Galatasaray",
"Gaziantepspor",
"Kayserispor",
"Konyaspor",
"RizeSpor",
"Sivasspor",
"Trabzonspor",
NULL
};
Dizgimizi Takimlar adi ile olusturduk.
Dizgileri siralamak icin kodlarimizi su sekilde yazabiliriz;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
int i;
for (i=0; Takimlar[i]!=NULL; i++ )
send_cmd(s_NickServ, "NOTICE %s :\2(%d\2) Numara -> \2%s", u->nick, i+1, Takimlar[i]);
}
Komut kullaniminda dizgideki tanimli bilgileri siralayacaktir.
|
Alıntı: |
© NickServ Kullanilabilir TAKIM Listemiz
© NickServ -
© NickServ (1) Numara -> Ankaragucu
© NickServ (2) Numara -> Antalyaspor
© NickServ (3) Numara -> Besiktas
© NickServ (4) Numara -> Bursaspor
© NickServ (5) Numara -> Eskisehirspor
© NickServ (6) Numara -> Fenerbahce
© NickServ (7) Numara -> Galatasaray
© NickServ (8) Numara -> Gaziantepspor
© NickServ (9) Numara -> Kayserispor
© NickServ (10) Numara -> Konyaspor
© NickServ (11) Numara -> RizeSpor
© NickServ (12) Numara -> Sivasspor
© NickServ (13) Numara -> Trabzonspor
|
Dizgimiz icerisindeki verileri kullandirmak, icerisinde olmayanlari kullandirmamak icin su yolu deneyebiliriz;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
static void do_set_takim(User *u, NickGroupInfo *ngi, char *param) {
NickInfo *ni;
ni = get_nickinfo(u->nick);
const char *nick = ngi_mainnick(ngi);
int i;
int sonuc = 0;
if (!param) {
ngi->takim = NULL;
send_cmd(s_NickServ, "NOTICE %s :Takiminiz \2 Kaldirildi.", u->nick);
put_nickgroupinfo(ngi);
return;
}
for (i=0; Takimlar[i]!=NULL; i++) {
send_cmd(s_NickServ, "NOTICE %s :~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", u->nick);
send_cmd(s_NickServ, "NOTICE %s :-\2",u->nick);
send_cmd(s_NickServ, "NOTICE %s :Sectiginiz takim \2 %s", u->nick, param);
sonuc=1;
break;
}
if (sonuc==1) {
ngi->takim = sstrdup(param);
send_cmd(s_NickServ, "NOTICE %s :-", u->nick);
send_cmd(s_NickServ, "NOTICE %s :Takiminiz \2%s\2 Olarak Belirlendi.", u->nick, ngi->takim);
} else {
send_cmd(s_NickServ, "NOTICE %s :~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", u->nick);
send_cmd(s_NickServ, "NOTICE %s :-\2", u->nick);
send_cmd(s_NickServ, "NOTICE %s :\2Maalesef\2, Sahip Olmak istediginiz \2takim\2, Listemizde ekli \2degildir.\2", u->nick);
send_cmd(s_NickServ, "NOTICE %s :Kullanilabilir takimlari listelemek icin, \2 /NS takimlar\2 Komutunu Kullaniniz.", u->nick);
send_cmd(s_NickServ, "NOTICE %s :Ayrintili Bilgi icin, \2 #HELP \2 Kanalina giriniz..", u->nick);
send_cmd(s_NickServ, "NOTICE %s :-\2", u->nick);
return;
}
}
Burada girilen veri, eğer dizgi icerisinde varsa kabul edilecel, eğer dizgi icerisinde yoksa reddedilip hata vericektir.