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 />

Üçüncü parametreye aktarılan değer kopyalanan yazının uzunluğundan küçük ya da<br />

eşitse kopyalanan yere sizce neden sonlandırıcı karakter eklenmez?<br />

Bu işlevin yazılar içinde yer değiştirme işlemi yapabilmesi istenmiştir:<br />

#include <br />

#include <br />

#define SIZE 100<br />

int main()<br />

{<br />

char str1[SIZE] = "Necati Ergin";<br />

char str2[SIZE] = "Mehmet Aktunc";<br />

strncpy(str1, str2, 6);<br />

printf("(%s)\n", str1);<br />

}<br />

return 0;<br />

strncat İşlevi<br />

Standart bir C işlevidir. İşlevin ismi ingilizce "string number concatanate" sözcüklerinden<br />

gelir. Bir yazının sonuna başka bir yazıdan belirli bir sayıda karakteri kopyalamak<br />

amacıyla kullanılır. string.h başlık dosyası içinde bulunan bildirimi aşağıdaki gibidir:<br />

char *strncat(char *s1, const char *s2, size_t n);<br />

İşlev birinci parametre değişkeni içinde başlangıç adresi verilen yazının sonuna, ikinci<br />

parametresinde başlangıç adresi tutulan karakter dizisinden, üçüncü parametresinde<br />

tutulan tamsayı adedi kadar karakteri kopyalar.<br />

İşlevin geri dönüş değeri sonuna ekleme yapılacak yazının başlangıç adresidir.<br />

İşlevin tanımı ve işlevi sınayan bir main işlevi örnek olarak aşağıda veriliyor:<br />

char *mstrncat(char *s1, const char *s2, unsigned int n)<br />

{<br />

char *ptr;<br />

for (ptr = s1; *ptr != '\0'; ++ptr)<br />

;<br />

while (n-- && *s2 != '\0')<br />

*ptr++ = *s2++;<br />

*ptr = '\0';<br />

}<br />

return s1;<br />

#include <br />

#include <br />

#define SIZE 100<br />

int main()<br />

{<br />

char dest[SIZE];<br />

char source[SIZE];<br />

274

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

Saved successfully!

Ooh no, something went wrong!