Amiga Dünyası sayı 16, sayfa 27

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 27

/* Basit Window Tekniği */ #define ESC 27

main() ( int handle: char *e;

handle — open("CON:0/0/200/50/Window”, 0. 0);

if(handle !— -1) do read(handle, e, printi("Karakter *ck | while !2ESC): close(handle);

| |

Program sonu */ Programımızı ilk satırdan açıklamaya başlayabiliriz. #define ESC 27 komutu ile, Escape tuşunun kod değerini bir macro değişken olarak ESC macrosuna atıyoruz. "main()" ile ana program başlıyor ve,

int handle; char

ile, değişken tanımlamalarını yapıyoruz. Burada "handle" window structure'ın yapı adresini saklıyoruz. *handle, aynı zamanda bize window'un açılıp açılmadığını gösteriyor.

read(handle, c, 1); 9ec", *c):

Burada ise, read() fonksiyonu ile window'dan tek karakterlik bir giriş bekleniyor ve daha sonra printf() ile WorkBench ekranına yazılıyor.

"read()" fonksiyonu, burada yeni. Bu fonksiyon, aynı zamanda dosyalarla ilgili işlemlerde de çok karşımıza çıkacak. while(*c !=ESC);

ile, gelen karakterin ESC olup olmadığına bakıyoruz. Eğer değilse program sona eriyor. Bu giriş örneğinden sonra, şimdi de oldukça faydalı olan bir kopya (copy) programını inceleyelim. Buradaki örnekte programınızı compile ettikten sonra, çalıştırırken program isminizin yanına iki tane ayrı parametre gireceksiniz. Birinci parametre, kopya edilecek olan dosya'nın; ikincisi ise, yeni dosya'nın ismini belirtir. Eğer parametreleri eksik ya da fazla girerseniz, programımız giriş hatası verecektir. Dikkat ederseniz, ana programımızın isminden sonra iki parametre giriyoruz. Bu parametreleri Amiga sistemimiz bize yolluyor. Yollanan değerleri programı inceleyerek anlamaya çalışalım;

/* Kopya programı */ #inelüde <stdio.h>

main(argc, argv) int char *argvl |: ( if(argc 1—3)

DERLEYİCİLER

( printf("Giriş prinif Hedef); | else copylargv| 11. |

Copy routine */

tofile) char *fromfile, *tofile; ( FİLE *output, *fopen(); register long counter — 0; register İM ©;

— fopen(fromfile, "r”)))

dosyası okumaya açılamadı!", Yromfile); retum 0; | (ontput — fopençtofile, "w"”))) | dosyası yazmaya açılamadı!", tofile); felose(input); return Ü;

|

while( (c — | fputc( Cc, ouLput); counter++:

printf ld Byte kopyalandı. counter);

Program sonu */ Programımızı açıklamaya başlayalım; <stdio.h> ile, include dosyası gözden geçiriliyor ve fclose(), tanımlamaları yapılıyor.

main(argc, argv) int arge; int |:

Burada görüldüğü gibi, main() fonksiyonu içinde "argc" ve "argv" değişkenleri. Bu değişkenlerden 'argc', bize program isminden sonra verilen parametre sayısını, 'argv' ise, parametrelerin kendisini veriyor. Bir örnek vermek gerekirse; Program ismimiz, copy olsun:

copy prog.c

Copy program ismimiz ve ilk parametre, prog.c ikinci parametre, ram:prog2.c son parametreyi belirliyor. Parametre sayımız ise üç oluyor. Daha sonraki satırlarda ise;

if(argc !—3) | hatası!"); prinif "Kaynak Hedef"); |

Klavyeyle gezinmek için ← ve → tuşları.