18.02.2013 Views

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

}<br />

int y, x;<br />

<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />

if(argc != 2)<br />

{<br />

printf("Kullanım: %s \n", argv[0]);<br />

exit(1);<br />

}<br />

fp = fopen(argv[1], "r");<br />

if(fp == NULL)<br />

{<br />

perror("Girdi dosyası açılamadı");<br />

exit(1);<br />

}<br />

initscr(); /* Curses kipi ba¸slangıcı */<br />

getmaxyx(stdscr, row, col); /* ekran sınırlarını bul */<br />

wh<strong>ile</strong>((ch = fgetc(fp)) != EOF) /* dosyayı sonuna kadar oku */<br />

{<br />

getyx(stdscr, y, x); /* o anki imleç konumunu al */<br />

if(y == (row – 1)) /* ekranın sonunda mıyız? */<br />

{<br />

printw("");<br />

/* kullanıcıya bir tu¸sa basmasını söyle */<br />

getch();<br />

clear(); /* ekranı temizle */<br />

move(0, 0); /* ekranın ba¸sına git */<br />

}<br />

if(prev == ’/’ && ch == ’*’) /* E˘ger sadece / ve * karakteri ise<br />

* koyu göstermeyi etkinle¸stir */<br />

{<br />

attron(A_BOLD); /* koyu gösterme etkin */<br />

getyx(stdscr, y, x); /* imlecin o anki konumunu al */<br />

move(y, x – 1); /* bir karakter geri git */<br />

printw("%c%c", ’/’, ch); /* esas görüntüleme burada yapılmakta */<br />

}<br />

else<br />

printw("%c", ch);<br />

refresh();<br />

if(prev == ’*’ && ch == ’/’)<br />

attroff(A_BOLD); /* e˘ger * ve / okunduysa *<br />

* koyu göstermeyi kapat */<br />

prev = ch;<br />

}<br />

endwin(); /* curses kipi sonu */<br />

fclose(fp);<br />

return 0;<br />

Tüm ¸su ilklendirme ve ıvır zıvırlardan korkmayın. Wh<strong>ile</strong> döngüsüne dikkatinizi verin. Her bir karakteri okuyarak<br />

/* karakter ikilisini aranmaktadır. Bir kere örüntüyü buldu mu attron() <strong>ile</strong> BOLD (koyu gösterme) özelli˘gini<br />

etkin hale getirmektedir. */ karakter ikilisi okundu˘gunda bu öznitelik attroff() <strong>ile</strong> kapatılmaktadır.<br />

Yukarıdaki program bize getyx() ve move() gibi iki faydalı i¸slevi tanıtmaktadır. ˙Ilk i¸slev imlecin o anki<br />

koordinatlarını y, x de˘gerlerine alır. getyx() bir makro oldu˘gundan i¸sleve gösterici aktarmak zorunda de˘giliz.<br />

move() i¸slevi imleci ver<strong>ile</strong>n koordinatlara hareket ettirir.<br />

Yukarıdaki program pek de fazla bir i¸s yapmayan gerçekten de basit bir örnektir. Bu satırlarda bir<strong>ile</strong>ri bir C<br />

dosyasını okuyup, onu ayrı¸stırıp de˘gi¸sik renklerde gösteren daha kullanı¸slı bir program yazabilir. Birisi bunu<br />

http://belgeler.org Linux Kitaplı˘gı 20 / 90

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

Saved successfully!

Ooh no, something went wrong!