08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

else<br />

while (n--)<br />

*p1++ = *p2++;<br />

}<br />

return vp1;<br />

memset işlevi<br />

Standart bir C işlevidir. Adresi verilen bir bellek bloğunu belirli bir karakter ile yani bir<br />

byte değeri ile doldurmak için kullanılır. İşlevin bildirimi:<br />

void *memset(void *block, int c, unsigned int nbytes);<br />

Bu işlev block adresinden başlayarak nbytes büyüklüğündeki bloğu, ikinci parametresiyle<br />

belirtilen byte değeriyle doldurulur.<br />

İşlev örneğin, herhangi bir türden bir diziyi sıfırlamak amacıyla kullanılabilir:<br />

double d[100];<br />

memset(d, 0, sizeof(d));<br />

İşlev aşağıdaki gibi tanımlanabilir:<br />

#include <br />

void *mymemset(void *block, int c, unsigned int n);<br />

int main()<br />

{<br />

int a[10];<br />

int i;<br />

mymemset(a, 0, sizeof(a));<br />

for (i = 0; i < 10; ++i)<br />

printf("%d\n",a[i]);<br />

}<br />

return 0;<br />

void *mymemset(void *block, int c, size_t n)<br />

{<br />

char *p=(char *)block;<br />

while (n--)<br />

*p++ = c;<br />

}<br />

return block;<br />

memchr işlevi<br />

Standart bir C işlevidir. Adresi verilen bir bellek bloğunda belirli bir byte değerini aramak<br />

için kullanılır. İşlevin string.h başlık dosyası içindeki bildirimi aşağıdaki gibidir:<br />

void *memchr(const void *block, int c, unsigned int nbytes);<br />

İşlev block adresinden başlayan nbytes içinde c değerine sahip bir byte'ı arar. İşlev ilk<br />

bulduğu c değerine sahip byte'ın adresi ile geri döner. İşlevin geri dönüş değeri void<br />

287

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

Saved successfully!

Ooh no, something went wrong!