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

İşlevimiz, adresleri gönderilen yazıları dinamik bir alana kopyalayarak, dinamik alanın<br />

başlangıç adresiyle geri dönüyor. strcpy ve strcat işlevleri, birinci paramatrelerinin<br />

değerleriyle geri döndüğünden<br />

strcpy(ptr, s1);<br />

strcat(ptr, s2);<br />

return ptr;<br />

deyimleri tek bir deyim olarak yazılabilirdi, değil mi?<br />

return strcat(strcpy(ptr, s1), s2);<br />

Birden Fazla Dinamik Alanın Bir Gösterici Dizisiyle Denetimi<br />

Dinamik bellek işlevleriyle elde edilen farklı blokların başlangıç adreslerinin bir gösterici<br />

dizisinin elemanlarında tutulması çok karşılaşılan bir temadır. Aşağıdaki programı<br />

inceleyin:<br />

#include <br />

#include <br />

#include <br />

char *get_name()<br />

{<br />

char name_entry[40];<br />

char *pd;<br />

}<br />

printf("ismi giriniz : ");<br />

gets(name_entry);<br />

pd = (char *) malloc(strlen(name_entry) + 1);<br />

if (pd == NULL) {<br />

printf("bellek yetersiz!..\n");<br />

exit(EXIT_FAILURE);<br />

}<br />

return strcpy(pd, name_entry);<br />

int main()<br />

{<br />

char *p[10];<br />

int k;<br />

int len_sum = 0;<br />

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

p[k] = get_name();<br />

printf("isimler : \n");<br />

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

printf("(%s) ", p[k]);<br />

len_sum += strlen(p[k]);<br />

}<br />

printf("\n");<br />

printf("girilen isimlerin ortalama uzunlugu = %lf\n", (double)len_sum /<br />

10);<br />

}<br />

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

free(p[k]);<br />

return 0;<br />

338

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

Saved successfully!

Ooh no, something went wrong!