08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

işlevin parametresi ayrıştırılmış zaman bilgisinin tutan struct tm türünden nesnenin<br />

adresidir. İşlevin parametresinde kullanılan adresin const olmadığına dikkat edin.<br />

Buradan işlevin bu adrese yazma yapacağı sonucunu çıkarabilirsiniz. İşlevin geri dönüş<br />

değeri takvim zamanı değeridir. Eğer ilgili sistemde takvim zamanı değeri elde<br />

edilemiyorsa işlev -1 değerine geri döner.<br />

İşlevin şöyle bir yan etkisi de vardır. Eğer parametresine aldığı adresteki yapı nesnesinin<br />

elemanları olması gereken değerleri aşıyorsa, mktime işlevi değerlerin fazla kısmını bir<br />

sonraki elemana ekler.<br />

Bu amaçla önce tm_sec isimli elemana bakılır. Buradaki fazlalıklar tm_min elemanına<br />

verilir. Burada da bir fazlalık oluşur ise sırasıyla yapı nesnesinin tm_hour, tm_mday,<br />

tm_mon ve tm_year elemanları değiştirilir. Bu elemanları değeri alındıktam sonra yapı<br />

nesnesinin tm_wday ve tm_yday isimli elemanları sahip olması gereken değerlere<br />

getirilir.<br />

Aşağıdaki kod, işlevin bu özelliğini kullanarak bir tarihin ne gününe geldiğini buluyor:<br />

#include <br />

#include <br />

int main()<br />

{<br />

struct tm t;<br />

const char *days[] = {"Pazar", "Pazartesi", "Sali", "Carsamba",<br />

"Persembe", "Cuma","Cumartesi", "bilinmiyor"};<br />

t.tm_mday = 11;<br />

t.tm_mon = 2;<br />

t.tm_year = 2005 - 1900;<br />

t.tm_sec = 1;<br />

t.tm_min = 0;<br />

t.tm_hour = 0;<br />

t.tm_isdst = -1;<br />

if (mktime(&t) == 1)<br />

t.tm_wday = 7;<br />

printf("gun = %s\n", days[t.tm_wday]);<br />

}<br />

return 0;<br />

402

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

Saved successfully!

Ooh no, something went wrong!