23 : İki Karakter Dizisini Birleştirme
Bir karakter dizisini başka bir karakter dizisinin sonuna ekleyerek yeni bir karakter dizisi oluşturmayı inceleyeceğiz. Bunun için önce birinci dizinin boyutunu bulup daha sonra ikinci dizinin elemanlarını bu dizinin devamına kopyalayacağız.
İlk for döngüsü ile null karaktere kadar olan karakterleri sayıyoruz ve ilk dizinin boyutunu buluyoruz. count burada boyutu tutuyor ancak print ettirdiğimiz count ve i sayılarından anlaşılacağı üzere i değişkeni de kullanılabilirdi. Aynı sayıyı tutmuş oluyorlar. Daha sonra bir öteleme işlemi için yazi1 değişkeninin indisi count ile toplanarak yazi2 değişkeninden karakterler kopyalanmaya başlıyor. En son karakter olarak ise yine null karakter atıyoruz.
Bu kodu biraz basitleştirerek yazmak da mümkün. count yerine i değişkenini kullanmak ilk adım olacak. İkinci adım ise öteleme yapmak yerine yine i değişkenini kullanmak olacak.
İlk döngüde herhangi bir iş yapmayacağımız için ; ile döngüyü kapatıyoruz. {} ile kapatsak da aynı şey olurdu.
İkinci döngüde ise atama işlemini yapacağız. Bir for döngüsünün üç bölümden oluştuğunu şöylemiştik. Bu bölümlerde birden fazla komut belirtilebilir. Yani birden fazla koşul yada ilk değer atamasını aynı anda yapabiliriz. Biz burada döngü indisini artırırken iki işlem yaparak hem i değişkenini hem de j değişkenini artırıyoruz. j değişkeni yazi2 dizisinin indisi olurken i değişkeni ise yazi1 dizisinin indisi olacak çünkü önceki döngüden zaten ötelenmiş bir değere sahip durumda.
Bu örneklerde yaptığımız iş de c kütüphanelerinde zaten tanımlı durumda. strcat fonksiyonu iki karakter dizisini birleştirmek için kullanılıyor. Basit şekilde onu da aşağıda gösterelim.
birlestir.c
#include <stdio.h>
int main()
{
char yazi1[100] = "ccppornekleri";
char yazi2[] = ".blogspot.com";
int i = 0;
int count = 0;
int j = 0;
for (i = 0; yazi1[i] != '\0'; i++)
{
count++;
}
printf("count = %d i = %d \n",count, i);
for (j = 0; yazi2[j] != '\0'; j++)
{
yazi1[count+j] = yazi2[j];
}
yazi1[count+j] = '\0';
printf("%s \n", yazi1);
return 0;
}
İlk for döngüsü ile null karaktere kadar olan karakterleri sayıyoruz ve ilk dizinin boyutunu buluyoruz. count burada boyutu tutuyor ancak print ettirdiğimiz count ve i sayılarından anlaşılacağı üzere i değişkeni de kullanılabilirdi. Aynı sayıyı tutmuş oluyorlar. Daha sonra bir öteleme işlemi için yazi1 değişkeninin indisi count ile toplanarak yazi2 değişkeninden karakterler kopyalanmaya başlıyor. En son karakter olarak ise yine null karakter atıyoruz.
Bu kodu biraz basitleştirerek yazmak da mümkün. count yerine i değişkenini kullanmak ilk adım olacak. İkinci adım ise öteleme yapmak yerine yine i değişkenini kullanmak olacak.
#include <stdio.h>
int main()
{
char yazi1[100] = "ccppornekleri";
char yazi2[] = ".blogspot.com";
int i = 0;
int count = 0;
int j = 0;
for (i = 0; yazi1[i] != '\0'; i++);
printf("i = %d \n", i);
for (j = 0; yazi2[j] != '\0'; j++,i++)
{
yazi1[i] = yazi2[j];
}
yazi1[i] = '\0';
printf("%s \n", yazi1);
return 0;
}
İlk döngüde herhangi bir iş yapmayacağımız için ; ile döngüyü kapatıyoruz. {} ile kapatsak da aynı şey olurdu.
İkinci döngüde ise atama işlemini yapacağız. Bir for döngüsünün üç bölümden oluştuğunu şöylemiştik. Bu bölümlerde birden fazla komut belirtilebilir. Yani birden fazla koşul yada ilk değer atamasını aynı anda yapabiliriz. Biz burada döngü indisini artırırken iki işlem yaparak hem i değişkenini hem de j değişkenini artırıyoruz. j değişkeni yazi2 dizisinin indisi olurken i değişkeni ise yazi1 dizisinin indisi olacak çünkü önceki döngüden zaten ötelenmiş bir değere sahip durumda.
Bu örneklerde yaptığımız iş de c kütüphanelerinde zaten tanımlı durumda. strcat fonksiyonu iki karakter dizisini birleştirmek için kullanılıyor. Basit şekilde onu da aşağıda gösterelim.
#include <stdio.h>
#include <string.h>
int main()
{
char yazi1[100] = "ccppornekleri";
char yazi2[] = ".blogspot.com";
strcat(yazi1, yazi2);
printf("%s \n", yazi1);
return 0;
}
Yorumlar
Yorum Gönder