{"id":472,"date":"2020-02-02T09:31:55","date_gmt":"2020-02-02T07:31:55","guid":{"rendered":"http:\/\/kalfaoglu.com\/?page_id=472"},"modified":"2021-09-18T12:46:04","modified_gmt":"2021-09-18T10:46:04","slug":"c-dili-7-konu","status":"publish","type":"page","link":"https:\/\/kalfaoglu.com\/wp\/c-dili-programlama\/c-dili-7-konu\/","title":{"rendered":"C Dili &#8211; 7. Konu"},"content":{"rendered":"\n<h3>KEL\u0130ME D\u0130Z\u0130LER\u0130 (STRING) NED\u0130R?<\/h3>\n<p>Bir \u201cstring\u201d ya da \u201ckelime katar\u0131\u201d, genellikle harflerden olu\u015fan karakterler dizisidir. \u00c7\u0131kt\u0131n\u0131z\u0131n g\u00fczel ve manal\u0131 g\u00f6r\u00fcnmesi i\u00e7in, i\u00e7inde isimler ve adresler olabilmesi i\u00e7in, programlar\u0131n\u0131z\u0131n string&#8217;ler kullanmas\u0131 \u015fartt\u0131r. C dilinde string in tam tan\u0131m\u0131, <b>&#8220;char&#8221; tipi bilgilerin, NULL karakter (yani s\u0131f\u0131r) ile sonland\u0131r\u0131lmas\u0131&#8217;<\/b>d\u0131r.<br \/><br \/>C&#8217;de bir string&#8217;in kar\u015f\u0131la\u015ft\u0131raca\u011f\u0131, kopyalayaca\u011f\u0131 yada ekrana yans\u0131taca\u011f\u0131 zaman, bunlar\u0131 ger\u00e7ekle\u015ftiren fonksiyonlar, string&#8217;in sonundaki NULL bulunana dek bu i\u015flemi yapmak \u00fczere programlanm\u0131\u015ft\u0131r.<br \/><br \/><\/p>\n<h3>ARRAY (dizi) NED\u0130R?<\/h3>\n<p><br \/>Dizi, ayni tip verilerin birbiri arkas\u0131na tan\u0131mlanmas\u0131d\u0131r. String, bir cins dizidir.<br \/><br \/>CHRSTRG.C:<br \/>================================================================<br \/>main()<br \/>{<br \/>\u00a0\u00a0\u00a0 char isim[7];\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 \/* Bir karakter dizisi tanimlayalim *\/<br \/>\u00a0\u00a0\u00a0 isim[0] = &#8216;T&#8217;;<br \/>\u00a0\u00a0\u00a0 isim[1] = &#8216;u&#8217;;<br \/>\u00a0\u00a0\u00a0 isim[2] = &#8216;r&#8217;;<br \/>\u00a0\u00a0\u00a0 isim[3] = &#8216;g&#8217;;<br \/>\u00a0\u00a0\u00a0 isim[4] = &#8216;u&#8217;;<br \/>\u00a0\u00a0\u00a0 isim[5] = &#8216;t&#8217;;<br \/>\u00a0\u00a0\u00a0 isim[6] = 0; \u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 \/* Bo\u015f karakter &#8211; stringin sonu *\/<br \/>\u00a0\u00a0\u00a0 printf(&#8220;Isim %s dur. \\n&#8221;,isim);<br \/>\u00a0\u00a0\u00a0 printf(&#8220;I\u00e7inden bir karakter: %c\\n&#8221;,isim[2]);<br \/>\u00a0\u00a0\u00a0 printf(&#8220;Ismin bir par\u00e7as\u0131: %s \\n&#8221;,&amp;isim[3]);<br \/>}<br \/><br \/>================================================================<br \/><br \/>Bu programda, ilk \u00f6nce, &#8220;char&#8221; tipi bir tan\u0131mlama g\u00f6r\u00fcyoruz. <br \/>K\u00f6\u015feli parantezler i\u00e7inde, ka\u00e7 hanelik bir dizi tan\u0131mlanaca\u011f\u0131n\u0131 belirtiyoruz. <br \/>C dilinde b\u00fct\u00fcn diziler s\u0131f\u0131rdan ba\u015flad\u0131\u011f\u0131 i\u00e7in, bu tan\u0131mlama ile kullanabilece\u011fimiz en y\u00fcksek index de\u011feri 6 d\u0131r.<br \/><br \/><\/p>\n<h3>STRING NASIL KULLANILIR<\/h3>\n<p><br \/>Demek ki, &#8220;isim&#8221; de\u011fi\u015fkeni, i\u00e7inde 7 tane karakter tutabilir. Fakat en son <br \/>karakterin s\u0131f\u0131r olmas\u0131 zorunlulu\u011fu oldu\u011fu i\u00e7in, kullan\u0131labilecek olan alan<br \/>6 karakterliktir. Bu stringin i\u00e7ine manal\u0131 bir \u015fey y\u00fcklemek i\u00e7in, yedi tane <br \/>komut veriyoruz &#8211; her biri, stringe bir karakter atamaktad\u0131r. En sonunda da, <br \/>stringin sonunu belirten s\u0131f\u0131r rakam\u0131n\u0131 koyuyoruz. (Bir &#8220;#define&#8221; ile NULL <br \/>karakteri, program\u0131n ba\u015f\u0131nda s\u0131f\u0131r olarak tan\u0131mlayabiliriz)<br \/><br \/>printf komutundaki %s i\u015fareti, printf&#8217;e &#8220;isim&#8221; isimli stringden, s\u0131f\u0131ra <br \/>rastlay\u0131ncaya kadar ekrana yazmas\u0131n\u0131 belirtir. Dikkat etmeniz gereken bir <br \/>nokta, &#8220;isim&#8221; de\u011fi\u015fkeninin indexinin yaz\u0131lmas\u0131n\u0131n gerekmedi\u011fidir<br \/><br \/>STRING&#8217;\u0130N B\u0130R KISMININ YAZILMASI<br \/><br \/>\u0130kinci printf komutu ise %c ile, stringin i\u00e7inden sadece bir karakter<br \/>(harf) yaz\u0131lmas\u0131n\u0131 g\u00f6sterir istedi\u011fimiz karakterin index numaras\u0131n\u0131 da,<br \/>&#8220;isim&#8221; de\u011fi\u015fkeninin yan\u0131na, k\u00f6\u015feli parantezler aras\u0131nda g\u00f6sterebiliriz<br \/><br \/>Son printf komutunda ise, stringin 4. karakterinden itibaren yazman\u0131n bir <br \/>\u00f6rne\u011fidir&#8221;isim&#8221; de\u011fi\u015fkeninin \u00f6n\u00fcndeki &amp; (ampersand) i\u015fareti isim[3]&#8217;un <br \/>haf\u0131zada sakland\u0131\u011f\u0131 adresin printf&#8217;e ge\u00e7irilmesini belirtir. Adresleri 8. <br \/>konuda g\u00f6rece\u011fiz, fakat ufak bir \u00f6rnek ile size bizleri nelerin<br \/>bekledi\u011fini g\u00f6stermek istedim. <br \/><br \/>BAZI STRING FONKSIYONLARI <br \/><br \/>STRING.C<br \/>================================================================<br \/><br \/>main()<br \/>{<br \/>\u00a0\u00a0\u00a0 char isim1[12],isim2[12],karisik[25];<br \/>\u00a0\u00a0\u00a0 char baslik[20];<br \/><br \/>\u00a0\u00a0\u00a0 strcpy(isim1,&#8221;Rosalinda&#8221;);<br \/>\u00a0\u00a0\u00a0 strcpy(isim2,&#8221;Zeke&#8221;);<br \/>\u00a0\u00a0\u00a0 strcpy(baslik,&#8221;Bu bir basliktir.&#8221;);<br \/><br \/>\u00a0\u00a0\u00a0 printf(&#8221; %s\\n\\n&#8221; ,baslik);<br \/>\u00a0\u00a0\u00a0 printf(&#8220;isim 1: %s \\n&#8221;,isim1);<br \/>\u00a0\u00a0\u00a0 printf(&#8220;isim 2: %s \\n&#8221;,isim2);<br \/><br \/>\u00a0\u00a0\u00a0 if(strcmp(isim1,isim2)&gt;0) \/* sayet isim1 &gt; isim2 ise, 1 dondurur *\/<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 strcpy(karisik,isim1);<br \/>\u00a0\u00a0\u00a0 else<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 strcpy(karisik,isim2);<br \/><br \/>\u00a0\u00a0\u00a0 printf(&#8220;Alfabetik olarak en buyuk isim %s dir.\\n&#8221;,karisik);<br \/><br \/>\u00a0\u00a0\u00a0 strcpy(karisik,isim1);<br \/>\u00a0\u00a0\u00a0 strcat(karisik,&#8221; &#8220;);<br \/>\u00a0\u00a0\u00a0 strcat(karisik,isim2);<br \/>\u00a0\u00a0\u00a0 printf(&#8220;Iki isim birden %s\\n&#8221;,karisik);<br \/>}<br \/>================================================================ <br \/>\u0130lk \u00f6nce 4 tane string tan\u0131ml\u0131yoruz. Daha sonra, &#8220;strcpy&#8221; isimli \u00e7ok pratik<br \/>bir fonksiyona geliyoruz. yapt\u0131\u011f\u0131 is, bir stringi, bir di\u011ferine, ta ki<br \/>s\u0131f\u0131r bulunana kadar kopyalamak. Hangi string&#8217;in hangisine kopyalanaca\u011f\u0131n\u0131 hat\u0131rlamak icin, bir atama komutunu dusunun (&#8220;x=23&#8221; gibi). <br \/>Veri, sa\u011fdakinden, soldakine kopyalan\u0131r. Bu komutun yap\u0131lmas\u0131ndan sonra, isim1 in i\u00e7inde, &#8220;Rosalinda&#8221; olacakt\u0131r \u2013 \u00e7ift t\u0131rnaks\u0131z olarak. <br \/>\u00c7ift t\u0131rnaklar, derleyicinin sizin bir string tan\u0131mlad\u0131\u011f\u0131n\u0131z\u0131 anlamas\u0131 i\u00e7in gereklidir.<br \/><br \/>STRINGLER\u0130N ALFABETIK OLARAK SIRAYA KONMASI<br \/><br \/>\u0130lginizi \u00e7ekebilecek di\u011fer bir fonksiyonda, &#8220;strcmp&#8221; dur. \u015eayet kendisine <br \/>ge\u00e7irilen birinci string ikinciden daha b\u00fcy\u00fckse, 1 d\u00f6nd\u00fcr\u00fcr, ayni ise 0, ve <br \/>ikinci daha b\u00fcy\u00fckse -1 d\u00f6nd\u00fcr\u00fcr. &#8220;Zeke&#8221; stringinin kazanmas\u0131, sizi herhalde <br \/>\u015fa\u015f\u0131rtmaz. Burada stringin boyu \u00f6nemli de\u011fildir, sadece i\u00e7indeki<br \/>karakterler. Ayr\u0131ca harflerin buyuk yada k\u00fc\u00e7\u00fck harf olmas\u0131 da fark ettirir. <br \/>C de bir stringin b\u00fct\u00fcn harflerini k\u00fc\u00e7\u00fck yada b\u00fcy\u00fc\u011fe \u00e7eviren fonksiyonlar da <br \/>vard\u0131r. Bunlar\u0131 daha ileri kullanaca\u011f\u0131z.<br \/><br \/>STRINGLER\u0130 B\u0130RBIRINE EKLEMEK<br \/><br \/>En son sat\u0131rda, &#8220;strcat&#8221; isimli yeni bir fonksiyon g\u00f6receksiniz. G\u00f6revi,<br \/>bir string&#8217;in sonuna di\u011fer stringi eklemektir. Bunu yaparken NULL karakterin <br \/>de yerli yerinde olmas\u0131n\u0131 sa\u011flar. Burada, &#8220;isim1&#8221;, &#8220;kar\u0131\u015f\u0131k&#8221; &#8216;a<br \/>kopyalan\u0131r, daha sonra &#8220;kar\u0131s\u0131k&#8221; a iki bo\u015fluk ve &#8220;isim2&#8221; eklenir. Stringler <br \/>zor de\u011fildir, ve son derece faydal\u0131d\u0131rlar. Onlar\u0131 kullanmay\u0131 iyice <br \/>\u00f6\u011frenmenizde fayda vard\u0131r.<br \/><br \/><br \/><\/p>\n<h3>BIR TAMSAYI DIZISI<\/h3>\n<p><br \/>INTDIZIN.C:<br \/>================================================================<br \/>main()<br \/>{<br \/>\u00a0\u00a0\u00a0 int degerler[12];<br \/>\u00a0\u00a0\u00a0 int index;<br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 12;index++)<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 degerler[index] = 2 * (index + 4);<br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 12;index++)<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;Index = %2d deki degeri %3d dir..\\n&#8221;,index,degerler[index]);<br \/>}<br \/>================================================================<br \/><br \/>Bu programda, bir tamsayi dizisi tan\u0131ml\u0131yoruz. g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, ayn\u0131 string<br \/>tan\u0131mlama gibi.. Bu sayede, index de\u011fi\u015fkeni hari\u00e7 on iki tane de\u011fi\u015fkenimiz <br \/>oluyor. Bu de\u011fi\u015fkenlerin isimleri &#8220;degerler[0]&#8221; , &#8220;degerler[1]&#8221; ,vs. dir.<br \/>\u0130lk &#8220;for&#8221; d\u00f6ng\u00fcs\u00fcnde, bunlara de\u011fer at\u0131yoruz, ikincisi ise, index de\u011fi\u015fkeni <br \/>ve &#8220;degerler&#8221; dizisinin i\u00e7indekileri ekrana yaz\u0131yor.<br \/><br \/><\/p>\n<h3>BIR KAYAR NOKTA DIZINI<\/h3>\n<p><br \/>BUYUKDIZ.C:<br \/>================================================================<br \/>char isim1[] = &#8220;Birinci Program basligi&#8221;;<br \/>main()<br \/>{<br \/>\u00a0\u00a0\u00a0 int index;<br \/>\u00a0\u00a0\u00a0 int ivir[12];<br \/>\u00a0\u00a0\u00a0 float tuhaf[12];<br \/>\u00a0\u00a0\u00a0 char isim2[] = &#8220;Ikinci Program Basligi&#8221;;<br \/><br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 12;index++) <br \/>\u00a0\u00a0\u00a0 {<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 ivir[index] = index + 10;<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 tuhaf[index] = 12.0 * (index + 7);<br \/>\u00a0\u00a0\u00a0 } <br \/>\u00a0\u00a0\u00a0 printf(&#8220;%s\\n&#8221;,isim1);<br \/>\u00a0\u00a0\u00a0 printf(&#8220;%s\\n\\n&#8221;,isim2);<br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 12;index++)\u00a0\u00a0\u00a0 <br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;%5d %5d %10.3f\\n&#8221;,index,ivir[index],tuhaf[index]);<br \/>}<br \/>================================================================ <br \/>Burada, &#8220;float&#8221; olarak tan\u0131ml\u0131 bir kayar nokta dizisi g\u00f6r\u00fcyorsunuz. Ayr\u0131ca <br \/>bu program, string&#8217;lere nas\u0131l ba\u015flang\u0131\u00e7 de\u011feri atanabilece\u011fini g\u00f6steriyor. <br \/>k\u00f6\u015feli parantezlerin i\u00e7ini bo\u015f b\u0131rakarak, derleyicinin o veriyi saklamak <br \/>i\u00e7in yeteri kadar yer ayarlamas\u0131n\u0131 sa\u011flad\u0131k. Program\u0131n i\u00e7inde, bir string <br \/>daha ilk de\u011ferini veriyoruz. Ba\u015fka yeni bir \u015fey yok bu programda. de\u011fi\u015fkenler <br \/>rastgele de\u011ferlere atan\u0131r, ve sonra da bu de\u011ferler ekrana yazd\u0131r\u0131l\u0131r.<br \/><br \/><br \/><\/p>\n<h3>BIR FONKSIYONDAN DEGER DONDURME<\/h3>\n<p><br \/>GERIDOND.C:<br \/>================================================================<br \/>main()<br \/>{<br \/>\u00a0\u00a0\u00a0 int index;<br \/>\u00a0\u00a0\u00a0 int matrix[20];<br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 20;index++) \/* veriyi uretelim *\/<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 matrix[index] = index + 1;<br \/><br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 5;index++) \/* orjinal veriyi, ekrana. *\/<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;Baslangic matrix[%d] = %d\\n&#8221;,index,matrix[index]);<br \/><br \/>\u00a0\u00a0\u00a0 yapbirsey(matrix); \/* fonksiyona gidip, deger degistirme *\/<br \/><br \/>\u00a0\u00a0\u00a0 for (index = 0;index &lt; 5;index++) \/* degismis matrix i yazalim *\/<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;Geri donen matrix[%d] = %d\\n&#8221;,index,matrix[index]);<br \/>}<br \/><br \/>yapbirsey(list) \/* Veri donusunu gosterir *\/<br \/>int list[];<br \/>{<br \/>\u00a0\u00a0\u00a0 int i;<br \/>\u00a0\u00a0\u00a0 for (i = 0;i &lt; 5;i++) \/* orjinal halini goster *\/<br \/>\u00a0\u00a0\u00a0 printf(&#8220;Onceki matrix[%d] = %d\\n&#8221;,i,list[i]);<br \/><br \/>\u00a0\u00a0\u00a0 for (i = 0;i &lt; 20;i++) \/* hepsine 10 ekle *\/<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 list[i] += 10;<br \/><br \/>\u00a0\u00a0\u00a0 for (i = 0;i &lt; 5;i++) \/* son halini yaz *\/<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;Sonraki matrix[%d] = %d\\n&#8221;,i,list[i]);<br \/>}<br \/>================================================================<br \/><br \/>Bir fonksiyondan de\u011fer d\u00f6nd\u00fcrmenin bir yolu da, diziler kullanmakt\u0131r. <br \/>Burada 20 hanelik bir dizi tan\u0131mlad\u0131ktan sonra, i\u00e7ine de\u011ferler at\u0131yoruz, <br \/>bu de\u011ferlerin ilk be\u015fini ekrana yazd\u0131ktan sonra, &#8220;yapbirsey&#8221; isimli <br \/>fonksiyona atl\u0131yoruz. Burada g\u00f6rece\u011finiz gibi, bu fonksiyon &#8220;matrix&#8221; isimli <br \/>diziye &#8220;list&#8221; demeyi tercih ediyor. Fonksiyona, ne cins bir dizi ge\u00e7ece\u011fini <br \/>bildirmek i\u00e7in, &#8220;int&#8221; olarak &#8220;list&#8221;i tan\u0131ml\u0131yoruz. Fonksiyona ka\u00e7 elemanl\u0131k <br \/>bir dizi ge\u00e7e\u011fini s\u00f6ylememize l\u00fczum yok, fakat istenirse belirtilebilir. Bu <br \/>nedenle bo\u015f k\u00f6\u015feli parantezler kullan\u0131yoruz.<br \/><br \/>Bu fonksiyon da, kendisine ge\u00e7en de\u011ferleri g\u00f6sterdikten sonra, bu de\u011ferlere <br \/>10 ekliyor, ve yeni de\u011ferleri g\u00f6sterip, ana programa geri donuyor. Ana <br \/>programda g\u00f6r\u00fcyoruz ki, fonksiyonun yapt\u0131\u011f\u0131 de\u011fi\u015fiklikler,<br \/>&#8220;matrix&#8221; de\u011ferlerini de de\u011fi\u015ftirmi\u015f.<br \/><br \/>Dizilerin, normal de\u011fi\u015fkenlerin aksine, fonksiyondaki de\u011ferleri de\u011fi\u015fince, <br \/>\u00e7a\u011f\u0131ran programdaki dizinin de\u011ferlerinin de\u011fi\u015fmesini garipseyebilirsiniz. <br \/>Pointerlar konusuna gelince b\u00fct\u00fcn bunlar daha manal\u0131 olacakt\u0131r.<br \/><br \/><\/p>\n<h3>BIRDEN FAZLA BOYUTLU DIZILER<\/h3>\n<p><br \/>COKLUDIZ.C:<br \/>================================================================<br \/>main()<br \/>{<br \/>\u00a0\u00a0\u00a0 int i,j;<br \/>\u00a0\u00a0\u00a0 int buyuk[8][8],dev[25][12];<br \/>\u00a0\u00a0\u00a0 for (i = 0;i &lt; 8;i++)<br \/>\u00a0\u00a0 \u00a0 \u00a0\u00a0 for (j = 0;j &lt; 8;j++)<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 buyuk[i][j] = i * j; \/* Bu bir carpim tablosudur *\/<br \/><br \/>\u00a0\u00a0\u00a0 for (i = 0;i &lt; 25;i++)<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 for (j = 0;j &lt; 12;j++)<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 dev[i][j] = i + j; \/* Bu da bir toplama tablosudur *\/<br \/><br \/>\u00a0\u00a0\u00a0 buyuk[2][6] = dev[24][10]*22;<br \/>\u00a0\u00a0\u00a0 buyuk[2][2] = 5;<br \/>\u00a0\u00a0\u00a0 buyuk[buyuk[2][2]][buyuk[2][2]] = 177; \/* bu, buyuk[5][5] = 177; demek *\/<br \/><br \/>\u00a0\u00a0\u00a0 for (i = 0;i &lt; 8;i++) {<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 for (j = 0;j &lt; 8;j++)<br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;%5d &#8220;,buyuk[i][j]);<br \/>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 printf(&#8220;\\n&#8221;); \/* Her i nin degeri artinca, bir RETURN *\/<br \/>\u00a0\u00a0\u00a0\u00a0 }<br \/>}<br \/>================================================================<br \/><br \/>Burada iki tane iki boyutlu dizi kullan\u0131yoruz. &#8220;buyuk&#8221; adli 8 e 8 lik <br \/>dizinin elemanlar\u0131 [0][0] dan [7][7] ye kadar, toplam 64 tanedir. Di\u011fer <br \/>tan\u0131ml\u0131 &#8220;dev&#8221; dizi ise, kare de\u011fildir, fakat dizinin kare olmas\u0131n\u0131n \u015fart <br \/>olmad\u0131\u011f\u0131n\u0131 g\u00f6steren bir \u00f6rnektir.<br \/><br \/>\u0130ki dizi de biri \u00e7arp\u0131m tablosu, di\u011feri de toplama tablosu ile doldurulur.<br \/><br \/>Dizi elemanlar\u0131n\u0131n tek tek de\u011fi\u015ftirilebilece\u011fini g\u00f6stermek i\u00e7in, \u00f6nce<br \/>&#8220;buyuk&#8221; un elemanlar\u0131nda birine, &#8220;dev&#8221; in bir eleman\u0131 ile, 22 ile <br \/>\u00e7arp\u0131ld\u0131ktan sonra atan\u0131r. \u0130kinci atamada ise, &#8220;buyuk[2][2]&#8221; eleman\u0131 5 <br \/>de\u011ferine atan\u0131r. Herhangi bir i\u015flemin index olarak kullan\u0131labilece\u011fini <br \/>g\u00f6steren \u00fc\u00e7\u00fcnc\u00fc atama ise, asl\u0131nda &#8220;buyuk[5][5] = 177;&#8221; dir.<br \/><br \/>DIZITOPLAMI.C:<br \/>================================================================<br \/>#define MAX_ELEMAN 100<br \/>int toplami(int a[], int n) {<br \/>\u00a0if (n &lt; 1 || n &gt; MAX_ELEMAN) { <br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 printf(&#8220;Hata: Sadece 1 ila %d aras\u0131ndaki eleman say\u0131s\u0131n\u0131 toplayabilirim&#8221;,MAX_ELEMAN); <br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 exit(1); }<br \/>\u00a0else <br \/>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 if (n == 1) return a[0]; <br \/>\u00a0\u00a0\u00a0 else return (a[n-1] + toplami(a,n-1)); <br \/>} <br \/><br \/>================================================================<br \/>Burada da recursion ve dizileri beraber kullan\u0131yoruz ve bir dizinin elemanlar\u0131n\u0131 topluyoruz &#8211; kendi kendimizi \u00e7a\u011f\u0131rarak. <br \/><br \/><br \/>STRLEN.C:<br \/>================================================================<br \/>main() <br \/>{<br \/>\u00a0\u00a0\u00a0 char isim[] = &#8220;Charles Bronson&#8221;;<br \/>\u00a0\u00a0\u00a0 printf(&#8220;\u0130sim:\u00a0 %s dir, ve bu isim %d harften olu\u015fmaktad\u0131r. \\n&#8221;, isim, strlen(isim));<br \/>}<br \/>================================================================<br \/><br \/>Burada g\u00f6rd\u00fc\u011f\u00fcn\u00fcz strlen fonksiyonu, herhangi bir string&#8217;in boyunu sizlere d\u00f6nd\u00fcrecektir &#8211; sonundaki s\u0131f\u0131r\u0131 saymadan.<br \/><br \/><\/p>\n<h2>\u00d6devler<\/h2>\n<ol>\n<li>Her biri yakla\u015f\u0131k 6 karakter uzunlu\u011funda \u00fc\u00e7 k\u0131sa string i\u00e7ine &#8220;strcpy&#8221; ile i\u00e7lerine &#8220;bir&#8221;, &#8220;iki&#8221; ve &#8220;d\u00f6rt&#8221; kelimelerini kopyalayan bir program yaz\u0131n. Daha sonra, bu stringi, daha buyuk bir stringin i\u00e7ine, \u00fc\u00e7 kelimeyi yanyana getirerek yerle\u015ftirin. \u00e7\u0131kan sonucu on kere ekrana yazd\u0131r\u0131n.<br \/><br \/><\/li>\n<li>2. her biri 10 elemanl\u0131 olan &#8220;dizi1&#8221; ve &#8220;dizi2&#8221; isimli iki tamsayi dizisi tan\u0131mlay\u0131n, ve i\u00e7lerine bir d\u00f6ng\u00fc ile, \u0131v\u0131r z\u0131v\u0131r bilgi doldurun. Daha sonra her bir eleman\u0131n\u0131, ayni boydaki bir \u00fc\u00e7\u00fcnc\u00fc diziye ekleyin. Bu \u00e7\u0131kan sonucu da &#8220;diziler&#8221; isimli 3. bir diziye atay\u0131n. sonu\u00e7lar\u0131 ekrana yazd\u0131r\u0131n:<br \/>1 2 + 10 = 12<br \/>2 4 + 20 = 24<br \/>3 6 + 30 = 36 gibi..<br \/><br \/>\u0130pucu: printf komutu s\u00f6yle g\u00f6r\u00fcnecek:<br \/><b>printf(&#8220;%4d %4d + %4d = %4d\\n&#8221;,index,dizi1[index],dizi2[index], diziler[index]);<\/b><br \/><br \/><\/li>\n<li>&#8220;int length(char s[])&#8221;\u00a0\u00a0 tan\u0131m\u0131yla ba\u015flayan bir fonksiyon yaz\u0131n. Bu fonksiyona bir string ge\u00e7irildi\u011finde, size bu string&#8217;in ka\u00e7 harften olu\u015ftu\u011funu d\u00f6nd\u00fcrs\u00fcn. Yani strlen() in yapt\u0131\u011f\u0131n\u0131 yaps\u0131n, ama tabi fonksiyonunuzda strlen kullanmay\u0131n, kendiniz sayd\u0131r\u0131n.<br \/><br \/><\/li>\n<li>&#8220;void reverse(char s[])&#8221;\u00a0 tan\u0131m\u0131nda bir fonksiyon yaz\u0131n. Bu fonksiyona bir string ge\u00e7irildi\u011finde, fonksiyonunuz kendisine ge\u00e7irilmi\u015f harfleri tersine \u00e7evirsin.<br \/>Yani,\u00a0 fonksiyonu \u00e7a\u011f\u0131rmadan \u00f6nce\u00a0 string&#8217;in i\u00e7inde\u00a0 &#8220;merhaba d\u00fcnya&#8221; varsa, fonksiyondan d\u00f6n\u00fcnce string&#8217;in i\u00e7inde art\u0131k\u00a0 &#8220;ayn\u00fcd abahrem&#8221; olsun.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/kalfaoglu.com\/wp\/c-dili-programlama\/c-dili-8-konu\/\">Bir Sonraki Konu<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>KEL\u0130ME D\u0130Z\u0130LER\u0130 (STRING) NED\u0130R? Bir \u201cstring\u201d ya da \u201ckelime katar\u0131\u201d, genellikle harflerden olu\u015fan karakterler dizisidir. \u00c7\u0131kt\u0131n\u0131z\u0131n g\u00fczel ve manal\u0131 g\u00f6r\u00fcnmesi i\u00e7in, i\u00e7inde isimler ve adresler olabilmesi i\u00e7in, programlar\u0131n\u0131z\u0131n string&#8217;ler kullanmas\u0131 \u015fartt\u0131r. C dilinde string in tam tan\u0131m\u0131, &#8220;char&#8221; tipi bilgilerin, &hellip; <a href=\"https:\/\/kalfaoglu.com\/wp\/c-dili-programlama\/c-dili-7-konu\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":11,"featured_media":0,"parent":458,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-472","page","type-page","status-publish","hentry"],"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/comments?post=472"}],"version-history":[{"count":3,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/472\/revisions"}],"predecessor-version":[{"id":618,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/472\/revisions\/618"}],"up":[{"embeddable":true,"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/pages\/458"}],"wp:attachment":[{"href":"https:\/\/kalfaoglu.com\/wp\/wp-json\/wp\/v2\/media?parent=472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}