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