0% found this document useful (0 votes)
6 views8 pages

String Ler

Uploaded by

ardayucesoy214
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views8 pages

String Ler

Uploaded by

ardayucesoy214
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Stringler

Bilgisyar ve Programlaya
Course
Giriş

C'de String (Karakter Dizileri) Konusu


C dilinde string, yani metin verileri, karakterlerden oluşan dizilerle temsil edilir. C dilinde bir
"string" aslında sonu null karakter ( '\0' ) ile sonlandırılmış bir karakter dizisidir. Bu temel
yapı, daha büyük metin işlemleri için bir temel sağlar.

1. String'in Tanımı ve Yapısı


Bir string, bir karakter dizisidir ve her karakter bellekte ardışık adreslerde saklanır. String,
özel bir sonlandırıcı olan '\0' (null karakter) ile biter. Bu null karakter, string'in sonunu işaret
eder.

String'in Bellekte Temsili

char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

Yukarıdaki dizi, "Hello" string'ini temsil eder ve bellekte şu şekilde saklanır:

Adres İçerik

0x01 H

0x02 e

0x03 l

0x04 l

0x05 o

0x06 '\0'

2. String Tanımlama

a) Statik String Tanımlama

Stringler 1
Statik string'ler, sabit bir boyutla önceden tanımlanır.

char str1[6] = "Hello"; // Boyut açıkça belirtilmiş


char str2[] = "World"; // Boyut derleyici tarafından belirlenir

b) Dinamik String Tanımlama


Dinamik string'ler, malloc ile bellekten ayrılan alanlarla kullanılır.

#include <stdlib.h>

char *str = (char *)malloc(20 * sizeof(char)); // 20 karakterlik bellek ayrıldı

3. String Giriş ve Çıkış

String'i Tanımlayıp Yazdırma

#include <stdio.h>

int main() {
char str[] = "Merhaba Dünya!";
printf("String: %s\n", str);
return 0;
}

String Kullanıcıdan Alma


scanf ve gets fonksiyonları kullanılarak string alabilirsiniz.

Örnek: scanf ile String Alma

#include <stdio.h>

int main() {
char str[20];
printf("Bir string girin: ");
scanf("%s", str);
printf("Girdiğiniz string: %s\n", str);

Stringler 2
return 0;
}

Not: scanf yalnızca ilk boşluk karakterine kadar olan kısmı alır. Çok kelimeli girişler için
gets veya fgets tercih edilmelidir.
Örnek: fgets ile String Alma

#include <stdio.h>

int main() {
char str[50];
printf("Bir string girin: ");
fgets(str, sizeof(str), stdin);
printf("Girdiğiniz string: %s\n", str);
return 0;
}

4. String Fonksiyonları
C dilinde string işlemleri için standart kütüphane fonksiyonları sunulmuştur. Bu fonksiyonlar
string.h kütüphanesi içinde bulunur.

Fonksiyon Açıklama

strlen String'in uzunluğunu döndürür (null hariç).

strcpy Bir string'i diğerine kopyalar.

strcat İki string'i birleştirir.

strcmp İki string'i karşılaştırır.

strchr String içinde bir karakter arar.

strstr Bir string içinde başka bir string arar.

Örnekler
strlen Kullanımı

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

int main() {

Stringler 3
char str[] = "C Programlama";
printf("String uzunluğu: %zu\n", strlen(str));
return 0;
}

strcpy Kullanımı

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

int main() {
char kaynak[] = "Merhaba";
char hedef[20];
strcpy(hedef, kaynak);
printf("Hedef string: %s\n", hedef);
return 0;
}

strcat Kullanımı

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

int main() {
char str1[20] = "Merhaba ";
char str2[] = "Dünya!";
strcat(str1, str2); // str1'e str2'yi ekler
printf("Birleşmiş string: %s\n", str1);
return 0;
}

strcmp Kullanımı

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

int main() {
char str1[] = "abc";

Stringler 4
char str2[] = "abd";
int sonuc = strcmp(str1, str2);

if (sonuc == 0) {
printf("String'ler eşit.\n");
} else if (sonuc < 0) {
printf("str1, str2'den küçüktür.\n");
} else {
printf("str1, str2'den büyüktür.\n");
}
return 0;
}

5. String İşlemleri ile Örnekler

Palindrom Kontrolü
Bir string'in tersten yazılışı, aynı string ile aynıysa bu string "palindrom"dur.

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

int main() {
char str[100];
int uzunluk, palindrom = 1;

printf("Bir string girin: ");


scanf("%s", str);

uzunluk = strlen(str);
for (int i = 0; i < uzunluk / 2; i++) {
if (str[i] != str[uzunluk - i - 1]) {
palindrom = 0;
break;
}
}

if (palindrom) {

Stringler 5
printf("String bir palindromdur.\n");
} else {
printf("String bir palindrom değildir.\n");
}

return 0;
}

Kelime Sayma
Bir string içinde kaç kelime olduğunu bulma.

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

int main() {
char str[100];
int kelimeSayisi = 1;

printf("Bir cümle girin: ");


fgets(str, sizeof(str), stdin);

for (int i = 0; str[i] != '\0'; i++) {


if (str[i] == ' ' && str[i + 1] != ' ' && str[i + 1] != '\0') {
kelimeSayisi++;
}
}

printf("Kelime sayısı: %d\n", kelimeSayisi);


return 0;
}

String Ters Çevirme

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

int main() {

Stringler 6
char str[100], ters[100];
int uzunluk;

printf("Bir string girin: ");


scanf("%s", str);

uzunluk = strlen(str);
for (int i = 0; i < uzunluk; i++) {
ters[i] = str[uzunluk - i - 1];
}
ters[uzunluk] = '\0';

printf("Ters string: %s\n", ters);


return 0;
}

6. Sık Yapılan Hatalar


1. Null Karakteri Unutma:

Bir string'in sonlandırıcı ( '\0' ) karakterine sahip olması gerekir.

Elle oluşturulan dizilerde bu unutulursa, hatalı sonuçlar alınabilir.

2. Yetersiz Bellek Tahsisi:

Bir string için yeterli bellek ayrılmadığında taşmalar meydana gelebilir.

3. scanf Kullanımı:

scanf yalnızca ilk boşluğa kadar olan kısmı okur. Çok kelimeli girişlerde fgets

tercih edilmelidir.

4. Bellek Sızıntıları:

Dinamik string'lerde malloc ile ayrılan bellek, kullanılmadığında free ile serbest
bırakılmalıdır.

Ders Videoları
[Link]
[Link]
[Link]

Stringler 7
[Link]
[Link]

[Link]
[Link]
[Link]

[Link]
[Link]

Stringler 8

You might also like