C programlama dilinde stringler

Selam , bu yazıda C programlama dilindeki char veri türünden bahsedeğiz.Aslında yapısı itibariyle üst seviyedeki programlama dillerinden farklıdır.Özellikle farklı dilden geçenlerin zorlandığı bir konu olduğunu düşünüyorum.Lafı çok uzatmadan başlıklara inelim.

Aslında C programlama dilindeki stringler sıfır karakter \0 ile sonlandırılmış bir karakter dizisidir. Örneğin:

char c[] = "c string";

Derleyici, çift tırnak işaretleri içine alınmış bir dizi karakterle karşılaştığında, varsayılan olarak sonuna bir null karakteri \ 0 ekler.

Bir string nasıl tanımlanır?

C’de string değişkenelri aşağıdaki şekilde tanımlayabilirsiniz.

    char c[] = "abcd";

    char c[50] = "abcd";

    char c[] = {'a', 'b', 'c', 'd', '\0'};

    char c[5] = {'a', 'b', 'c', 'd', '\0'};

Stringlere sonradan değer atama

Diziler ve diziler C’dek tanımlandıktan sonra atama operatörünü desteklemezler. Örneğin

char name[100];
name = "Metin";  // Error! array type is not assignable.
string_example1.c:16:17: warning: initializer-string for array of chars is too lon

Kullanıcıdan string okuma

Kullanıcıdan string okumak için scanf () fonksiyonunu kullanabilirsiniz.

Scanf() fonskyinonuda dikakt etmeniz gereken boşlukla (boşluk, satırsonu, sekme vb.) karşılaşana kadar karakter dizisini okur.

Örnek 1: scanf() ile string okuma

#include <stdio.h>
int main()
{
    char name[20];
    printf("Enter name: ");
    scanf("%s", name);
    printf("Your name is %s.", name);
    return 0;
}

Output

Enter name: Metin Ağaoğlu
Your name is Metin.

Metin Ağaoğlu yukarıdaki programa girilmiş olsa da, name değişkeninde sadece “Metin” saklandı. Metin’den sonra boşluk ile karşılaştığı için okumayı durdurdu..

Bir string satırı nasıl okunur?

Bir string satırını okumak için fgets() fonksiyonunu kullanabilirsiniz. Sonrasında görüntülemek için puts () fonksiyonunu çağırabilirsiniz.

Örnek 2: fgets() ve puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("Enter name: ");
    fgets(name, sizeof(name), stdin);
    printf("Name: ");
    puts(name);
    return 0;
}

Burada, kullanıcıdan bir dizge okumak için fgets () işlevini kullandık.

fgets (isim, sizeof (isim), stdlin); // dizeyi oku

Sizeof (isim) değeri 30 olur. Dolayısıyla, girdi olarak isim dizgisinin boyutu olan en fazla 30 karakter alabiliriz.

Dizeyi yazdırmak için puts (name); kullandık.

String değişkenlerini fonksiyonlara parametre olarak geçme

C’de stringler, dizilere benzer şekilde bir fonksiyona parametre olarak aktarılabilir. Hemen bir örnek yapıp bunu görüntüleyelim.

Stringi fonksiyona parametre geçirme

#include <stdio.h>
void displayString(char str[]);

int main()
{
    char str[50];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     // Passing string to a function.    
    return 0;
}
void displayString(char str[])
{
    printf("String Output: ");
    puts(str);
}

Sonraki yazıda ise C’deki string leri fonksiyonlar ile nasıl müdahele edip üzerinde işlem yaparız bunu ele alacağız.

Teşekkürler…

Kaynak: https://www.programiz.com/c-programming/c-strings