C programlama dilinde string fonksiyonları

Herkese merhaba , önceki yazımda c ile char veri tipini görmüştük.Bu yazıda ise string manipülasyonu yapan birkaç fonksiyondan bahsedeceğiz.

strcat()

İlk fonksiyonumuz strcat(contcatenates).Strcat iki char tipindeki değişkeni birleştirmeye yarar.2 tane parametre alır.Hedef ve kaynak.

char *strcat(char *destination, const char *source)

Strcat () fonksiyonu, hedef string’i ve kaynak stringini birleştirir ve sonuç hedef değişkeninde saklanır.

Hemen örnekle görelim.

#include <stdio.h>
#include "string.h"

int main() {
    char str1[50] = "My name is", str2[] = "metin";

    strcat(str1,str2);

    puts(str1);
    puts(str2);
    return 0;
}

Sonuç

My name ismetin
metin

Dikkat etmemiz gereken nokta arkadaşlar birleştirilen string 1. parametrede kalmaktadır.

2. nokta ise strcat() , destionation string yan 1. parametrenin boyutu source stringini saklayacak kadar büyük olmalıdır. Değilse, segmentasyon hatası hatası alırsınız.

C strcmp()

Diğer göreceğiniz fonksiyon string compare, parametre olarak verilen 2 string karşılaştırır.Eğer birbirleri ile aynı ise 0 döndürür.

int strcmp (const char* str1, const char* str2);

Strcmp () işlevi iki char değişken alır ve geriye integer döndürür.

İki stringin ilk karakteri eşitse, iki stringin de sonraki karakteri karşılaştırılır. Bu işem iki string değerin karakterleri birbirleri ile farklı olana veya boş bir ‘\ 0’ karakterine ulaşılana kadar devam eder.

Hemen örneğimizi yapalım.

#include <stdio.h>
#include "string.h"

int main() {
char var1[] = "eth0";
char var2[] = "eth0";
char var3[] = "wan";

//comparing var1 and var2
if( strcmp(var1,var2) == 0 ) {
printf("These variables are same \n");
}

//comparing var1 and var3
if( strcmp(var1,var3) != 0 ) {
printf("These variables are not same \n");
}

}

Sonuç

These variables are same
These variables are not same

C strcpy()

String copy fonksiyonu olan strcpy() fonksiyonuna göz atalım.Fonksiyon strcat gibi önce char tipnide destionation sonrada source parametresi alıyor.

char* strcpy(char* destination, const char* source);

Strcpy () foksiyonu, source parametresi ile gelen string’i (boş karakter dahil) destination değişkenine kopyalar.

#include <stdio.h>
#include "string.h"

int main() {

char str1[20] = "PHP";
char str2[15];

strcpy(str2,str1);
puts(str2);
return 0;
}

Çıktı

PHP

Gördüğümüz gibi başta boş olan str2 değişkeni copy komutundan sonra ekrana kopyalandığı değeri veriyor.

C strlen()

Son göreceğimiz fonksiyon ise string length fonksiyonu.bu fonksiyon parametre olarak verilen string değerin uzunluğunu unsigned size_t olarak geri döner.

#include <stdio.h>
#include "string.h"

int main() {

char var1[20]="C programming";
char var2[20]={'P','r','o','g','r','a','m','\0'};

int len = strlen(var1);

// using the %zu format specifier to print size_t
printf("Length of string var1 = %zu \n",strlen(var1));
printf("Length of string var2 = %zu \n",strlen(var2));

return 0;
}

Çıktı

Length of string var1 = 13
Length of string var2 = 13

Strlen () fonksiyonunun uzunluğu hesaplarken \0 null karakterini saymadığını unutmayın.Bu kısmını kullanıcdan soyutlar.

Not: bu yazıda ele aldığımız fonksiyonlar <string.h> içerisinde tanımlıdır.Kullandığımız kodlarda bunu include ettiğimize dikakt edin.

Teşekkürler…

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