exploit paylaşım grubumuz: t.me/HTTPwnn

mala anlatır gibi C 8

Katılım
16 Haz 2026
Mesaj
111
Reaksiyon
83
xentr_thread_starter
╔════════════════════════════════════════════════════════════════════╗
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #8 ║
║ STRINGLER (KARAKTER DİZİLERİ) ║
║ (Mala Anlatır Gibi) ║
╚════════════════════════════════════════════════════════════════════╝

Önceki bölümde dizileri öğrendik.

Artık:

✓ Birden fazla sayıyı tek isim altında saklayabiliyoruz

✓ Döngülerle yüzlerce veriyi işleyebiliyoruz

✓ Ortalama, toplam ve arama işlemleri yapabiliyoruz

Fakat yeni bir problem ortaya çıktı.

Şimdiye kadar sadece sayılarla çalıştık.

Peki isim nasıl saklayacağız?

Örnek:

Ahmet

Mehmet

Ayşe

Zeynep

Bunlar sayı değil.

Bunlar metin.

İşte burada STRINGLER devreye girer.

════════════════════════════════════════════════════════════════════

▓▓▓ STRING NEDİR?

String:

Karakterlerden oluşan bir dizidir.

Aslında C dilinde özel bir string veri tipi yoktur.

Bu çok önemli bir bilgidir.

Birçok dilde:

string isim = "Ahmet";

yazılır.

Ama C dilinde işler biraz farklıdır.

C dili der ki:

"Metin mi saklayacaksın?

Karakter dizisi kullan."

════════════════════════════════════════════════════════════════════

▓▓▓ CHAR NEDİR?

Hatırlarsanız:

char

tek bir karakter saklıyordu.

Örnek:

char harf = 'A';

Burada sadece:

A

saklanıyor.

Bir tane karakter.

════════════════════════════════════════════════════════════════════

▓▓▓ PEKİ KELİME NASIL SAKLANIYOR?

Örnek:

Ahmet

Bilgisayar bunu şöyle görür:

A
h
m
e
t

Yani:

5 farklı karakter.

Bu yüzden:

char isim[6] = "Ahmet";

şeklinde saklanır.

════════════════════════════════════════════════════════════════════

▓▓▓ NEDEN 6?

En çok sorulan sorulardan biri.

Ahmet

5 harf.

Ama biz:

char isim[6];

yazdık.

Neden?

Çünkü C dili stringlerin sonuna gizli bir karakter koyar.

Bu karakter:

\0

olarak gösterilir.

Buna:

Null Terminator

denir.

Bellekte görünüm:

A
h
m
e
t
\0

Toplam:

6 karakter

════════════════════════════════════════════════════════════════════

▓▓▓ STRING TANIMLAMA

Yöntem 1

char isim[6] = "Ahmet";

Yöntem 2

char isim[] = "Ahmet";

İkinci yöntemde boyutu derleyici otomatik hesaplar.

════════════════════════════════════════════════════════════════════

▓▓▓ STRING YAZDIRMA

#include <stdio.h>

int main()
{
char isim[] = "Ahmet";

printf("%s", isim);

return 0;

}

ÇIKTI

Ahmet

Buradaki:

%s

string yazdırmak için kullanılır.

════════════════════════════════════════════════════════════════════

▓▓▓ KARAKTERLERE TEK TEK ERİŞME

String aslında dizi olduğu için:

char isim[] = "Ahmet";

şöyle görünür:

isim[0] = A
isim[1] = h
isim[2] = m
isim[3] = e
isim[4] = t
isim[5] = \0

Örnek:

printf("%c", isim[0]);

ÇIKTI

A

════════════════════════════════════════════════════════════════════

▓▓▓ TÜM KARAKTERLERİ GEZME

#include <stdio.h>

int main()
{
char isim[] = "Ahmet";

for(int i=0; isim != '\0'; i++)
{
printf("%c\n", isim);
}

return 0;
}

ÇIKTI

A
h
m
e
t

════════════════════════════════════════════════════════════════════

▓▓▓ KULLANICIDAN İSİM ALMA

#include <stdio.h>

int main()
{
char isim[50];

scanf("%s", isim);

printf("%s", isim);

return 0;
}

Giriş:

Ahmet

Çıktı:

Ahmet

════════════════════════════════════════════════════════════════════

▓▓▓ SCANF'IN TEHLİKESİ

Örnek giriş:

Ahmet Yılmaz

scanf("%s", isim);

sadece:

Ahmet

okur.

Boşluk görünce durur.

Bu yeni başlayanların çok düştüğü bir tuzaktır.

════════════════════════════════════════════════════════════════════

▓▓▓ FGETS KULLANIMI

Daha güvenli yöntem:

#include <stdio.h>

int main()
{
char isim[100];

fgets(isim, sizeof(isim), stdin);

printf("%s", isim);

return 0;
}

Artık:

Ahmet Yılmaz

gibi boşluklu veriler alınabilir.

════════════════════════════════════════════════════════════════════

▓▓▓ STRING.H KÜTÜPHANESİ

String işlemleri için:

#include <string.h>

kullanılır.

Bu kütüphane birçok hazır fonksiyon içerir.

════════════════════════════════════════════════════════════════════

▓▓▓ STRLEN()

En çok kullanılan fonksiyonlardan biridir.

Görevi:

String uzunluğunu bulmak.

Örnek:

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

int main()
{
char isim[] = "Ahmet";

printf("%d", strlen(isim));

return 0;
}

ÇIKTI

5

Çünkü:

Ahmet

5 harften oluşuyor.

════════════════════════════════════════════════════════════════════

▓▓▓ STRCPY()

Bir stringi başka stringe kopyalar.

Örnek:

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

int main()
{
char kaynak[] = "Cyber3301RD";
char hedef[50];

strcpy(hedef, kaynak);

printf("%s", hedef);

return 0;
}

ÇIKTI

Cyber3301RD

════════════════════════════════════════════════════════════════════

▓▓▓ STRCAT()

Stringleri birleştirir.

Örnek:

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

int main()
{
char isim[50] = "Cyber";

strcat(isim, "3301RD");

printf("%s", isim);

return 0;
}

ÇIKTI

Cyber3301RD

════════════════════════════════════════════════════════════════════

▓▓▓ STRCMP()

İki stringi karşılaştırır.

Örnek:

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

int main()
{
char a[] = "admin";
char b[] = "admin";

printf("%d", strcmp(a,b));

return 0;
}

ÇIKTI

0

Neden?

Çünkü iki string aynı.

════════════════════════════════════════════════════════════════════

▓▓▓ ŞİFRE KONTROLÜ

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

int main()
{
char sifre[50];

scanf("%s", sifre);

if(strcmp(sifre,"12345")==0)
{
printf("Giris Basarili");
}
else
{
printf("Hatali Sifre");
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ CHAR VE STRING FARKI

char harf = 'A';

Tek karakter.

char isim[] = "Ahmet";

Karakter dizisi.

Dikkat:

'A'

ve

"A"

aynı şey değildir.

Yeni başlayanların klasik hatasıdır.

════════════════════════════════════════════════════════════════════

▓▓▓ ASCII TABLOSU

Bilgisayar harfleri sayı olarak saklar.

Örnek:

A = 65

B = 66

C = 67

a = 97

b = 98

c = 99

Örnek:

printf("%d",'A');

ÇIKTI

65

════════════════════════════════════════════════════════════════════

▓▓▓ BÜYÜK HARFİ KÜÇÜK HARFE ÇEVİRME

#include <stdio.h>

int main()
{
char harf = 'A';

harf = harf + 32;

printf("%c", harf);

return 0;
}

ÇIKTI

a

ASCII sayesinde çalışır.

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #1

İSİM UZUNLUĞU BULMA

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

int main()
{
char isim[50];

scanf("%s", isim);

printf("%d", strlen(isim));

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #2

KULLANICI ADI KONTROLÜ

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

int main()
{
char kullanici[50];

scanf("%s", kullanici);

if(strcmp(kullanici,"admin")==0)
{
printf("Hosgeldin Admin");
}
else
{
printf("Yetkisiz Kullanici");
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #3

AD SOYAD BİRLEŞTİRME

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

int main()
{
char ad[50] = "Ahmet";
char soyad[] = " Yilmaz";

strcat(ad, soyad);

printf("%s", ad);

return 0;
}

ÇIKTI

Ahmet Yilmaz

════════════════════════════════════════════════════════════════════

⚠ YENİ BAŞLAYANLARIN HATALARI

HATA #1

char isim = "Ahmet";

YANLIŞ

Doğrusu:

char isim[] = "Ahmet";

════════════════════════════════════════════════════════════════════

HATA #2

if(a == b)

String karşılaştırırken kullanmak.

Doğrusu:

strcmp(a,b)

════════════════════════════════════════════════════════════════════

HATA #3

scanf("%s")

ile boşluklu veri almaya çalışmak.

Boşluk görünce okumayı durdurur.

════════════════════════════════════════════════════════════════════

✓ BÖLÜM ÖZETİ

Bu bölümde:

✓ String nedir

✓ Karakter dizileri

✓ Null terminator

✓ %s kullanımı

✓ scanf ve fgets

✓ strlen()

✓ strcpy()

✓ strcat()

✓ strcmp()

✓ ASCII mantığı

✓ Şifre kontrolü

✓ String işlemleri

konularını öğrendik.

Bir sonraki bölümde POINTERLAR (İşaretçiler) konusuna geçeceğiz. Bu konu C dilinin en güçlü ve en korkulan bölümlerinden biridir.
 
╔════════════════════════════════════════════════════════════════════╗
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #8 ║
║ STRINGLER (KARAKTER DİZİLERİ) ║
║ (Mala Anlatır Gibi) ║
╚════════════════════════════════════════════════════════════════════╝

Önceki bölümde dizileri öğrendik.

Artık:

✓ Birden fazla sayıyı tek isim altında saklayabiliyoruz

✓ Döngülerle yüzlerce veriyi işleyebiliyoruz

✓ Ortalama, toplam ve arama işlemleri yapabiliyoruz

Fakat yeni bir problem ortaya çıktı.

Şimdiye kadar sadece sayılarla çalıştık.

Peki isim nasıl saklayacağız?

Örnek:

Ahmet

Mehmet

Ayşe

Zeynep

Bunlar sayı değil.

Bunlar metin.

İşte burada STRINGLER devreye girer.

════════════════════════════════════════════════════════════════════

▓▓▓ STRING NEDİR?

String:

Karakterlerden oluşan bir dizidir.

Aslında C dilinde özel bir string veri tipi yoktur.

Bu çok önemli bir bilgidir.

Birçok dilde:

string isim = "Ahmet";

yazılır.

Ama C dilinde işler biraz farklıdır.

C dili der ki:

"Metin mi saklayacaksın?

Karakter dizisi kullan."

════════════════════════════════════════════════════════════════════

▓▓▓ CHAR NEDİR?

Hatırlarsanız:

char

tek bir karakter saklıyordu.

Örnek:

char harf = 'A';

Burada sadece:

A

saklanıyor.

Bir tane karakter.

════════════════════════════════════════════════════════════════════

▓▓▓ PEKİ KELİME NASIL SAKLANIYOR?

Örnek:

Ahmet

Bilgisayar bunu şöyle görür:

A
h
m
e
t

Yani:

5 farklı karakter.

Bu yüzden:

char isim[6] = "Ahmet";

şeklinde saklanır.

════════════════════════════════════════════════════════════════════

▓▓▓ NEDEN 6?

En çok sorulan sorulardan biri.

Ahmet

5 harf.

Ama biz:

char isim[6];

yazdık.

Neden?

Çünkü C dili stringlerin sonuna gizli bir karakter koyar.

Bu karakter:

\0

olarak gösterilir.

Buna:

Null Terminator

denir.

Bellekte görünüm:

A
h
m
e
t
\0

Toplam:

6 karakter

════════════════════════════════════════════════════════════════════

▓▓▓ STRING TANIMLAMA

Yöntem 1

char isim[6] = "Ahmet";

Yöntem 2

char isim[] = "Ahmet";

İkinci yöntemde boyutu derleyici otomatik hesaplar.

════════════════════════════════════════════════════════════════════

▓▓▓ STRING YAZDIRMA

#include <stdio.h>

int main()
{
char isim[] = "Ahmet";

printf("%s", isim);

return 0;

}

ÇIKTI

Ahmet

Buradaki:

%s

string yazdırmak için kullanılır.

════════════════════════════════════════════════════════════════════

▓▓▓ KARAKTERLERE TEK TEK ERİŞME

String aslında dizi olduğu için:

char isim[] = "Ahmet";

şöyle görünür:

isim[0] = A
isim[1] = h
isim[2] = m
isim[3] = e
isim[4] = t
isim[5] = \0

Örnek:

printf("%c", isim[0]);

ÇIKTI

A

════════════════════════════════════════════════════════════════════

▓▓▓ TÜM KARAKTERLERİ GEZME

#include <stdio.h>

int main()
{
char isim[] = "Ahmet";

for(int i=0; isim != '\0'; i++)
{
printf("%c\n", isim);
}

return 0;
}

ÇIKTI

A
h
m
e
t

════════════════════════════════════════════════════════════════════

▓▓▓ KULLANICIDAN İSİM ALMA

#include <stdio.h>

int main()
{
char isim[50];

scanf("%s", isim);

printf("%s", isim);

return 0;
}

Giriş:

Ahmet

Çıktı:

Ahmet

════════════════════════════════════════════════════════════════════

▓▓▓ SCANF'IN TEHLİKESİ

Örnek giriş:

Ahmet Yılmaz

scanf("%s", isim);

sadece:

Ahmet

okur.

Boşluk görünce durur.

Bu yeni başlayanların çok düştüğü bir tuzaktır.

════════════════════════════════════════════════════════════════════

▓▓▓ FGETS KULLANIMI

Daha güvenli yöntem:

#include <stdio.h>

int main()
{
char isim[100];

fgets(isim, sizeof(isim), stdin);

printf("%s", isim);

return 0;
}

Artık:

Ahmet Yılmaz

gibi boşluklu veriler alınabilir.

════════════════════════════════════════════════════════════════════

▓▓▓ STRING.H KÜTÜPHANESİ

String işlemleri için:

#include <string.h>

kullanılır.

Bu kütüphane birçok hazır fonksiyon içerir.

════════════════════════════════════════════════════════════════════

▓▓▓ STRLEN()

En çok kullanılan fonksiyonlardan biridir.

Görevi:

String uzunluğunu bulmak.

Örnek:

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

int main()
{
char isim[] = "Ahmet";

printf("%d", strlen(isim));

return 0;
}

ÇIKTI

5

Çünkü:

Ahmet

5 harften oluşuyor.

════════════════════════════════════════════════════════════════════

▓▓▓ STRCPY()

Bir stringi başka stringe kopyalar.

Örnek:

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

int main()
{
char kaynak[] = "Cyber3301RD";
char hedef[50];

strcpy(hedef, kaynak);

printf("%s", hedef);

return 0;
}

ÇIKTI

Cyber3301RD

════════════════════════════════════════════════════════════════════

▓▓▓ STRCAT()

Stringleri birleştirir.

Örnek:

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

int main()
{
char isim[50] = "Cyber";

strcat(isim, "3301RD");

printf("%s", isim);

return 0;
}

ÇIKTI

Cyber3301RD

════════════════════════════════════════════════════════════════════

▓▓▓ STRCMP()

İki stringi karşılaştırır.

Örnek:

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

int main()
{
char a[] = "admin";
char b[] = "admin";

printf("%d", strcmp(a,b));

return 0;
}

ÇIKTI

0

Neden?

Çünkü iki string aynı.

════════════════════════════════════════════════════════════════════

▓▓▓ ŞİFRE KONTROLÜ

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

int main()
{
char sifre[50];

scanf("%s", sifre);

if(strcmp(sifre,"12345")==0)
{
printf("Giris Basarili");
}
else
{
printf("Hatali Sifre");
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ CHAR VE STRING FARKI

char harf = 'A';

Tek karakter.

char isim[] = "Ahmet";

Karakter dizisi.

Dikkat:

'A'

ve

"A"

aynı şey değildir.

Yeni başlayanların klasik hatasıdır.

════════════════════════════════════════════════════════════════════

▓▓▓ ASCII TABLOSU

Bilgisayar harfleri sayı olarak saklar.

Örnek:

A = 65

B = 66

C = 67

a = 97

b = 98

c = 99

Örnek:

printf("%d",'A');

ÇIKTI

65

════════════════════════════════════════════════════════════════════

▓▓▓ BÜYÜK HARFİ KÜÇÜK HARFE ÇEVİRME

#include <stdio.h>

int main()
{
char harf = 'A';

harf = harf + 32;

printf("%c", harf);

return 0;
}

ÇIKTI

a

ASCII sayesinde çalışır.

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #1

İSİM UZUNLUĞU BULMA

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

int main()
{
char isim[50];

scanf("%s", isim);

printf("%d", strlen(isim));

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #2

KULLANICI ADI KONTROLÜ

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

int main()
{
char kullanici[50];

scanf("%s", kullanici);

if(strcmp(kullanici,"admin")==0)
{
printf("Hosgeldin Admin");
}
else
{
printf("Yetkisiz Kullanici");
}

return 0;
}

════════════════════════════════════════════════════════════════════

▓▓▓ MİNİ PROJE #3

AD SOYAD BİRLEŞTİRME

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

int main()
{
char ad[50] = "Ahmet";
char soyad[] = " Yilmaz";

strcat(ad, soyad);

printf("%s", ad);

return 0;
}

ÇIKTI

Ahmet Yilmaz

════════════════════════════════════════════════════════════════════

⚠ YENİ BAŞLAYANLARIN HATALARI

HATA #1

char isim = "Ahmet";

YANLIŞ

Doğrusu:

char isim[] = "Ahmet";

════════════════════════════════════════════════════════════════════

HATA #2

if(a == b)

String karşılaştırırken kullanmak.

Doğrusu:

strcmp(a,b)

════════════════════════════════════════════════════════════════════

HATA #3

scanf("%s")

ile boşluklu veri almaya çalışmak.

Boşluk görünce okumayı durdurur.

════════════════════════════════════════════════════════════════════

✓ BÖLÜM ÖZETİ

Bu bölümde:

✓ String nedir

✓ Karakter dizileri

✓ Null terminator

✓ %s kullanımı

✓ scanf ve fgets

✓ strlen()

✓ strcpy()

✓ strcat()

✓ strcmp()

✓ ASCII mantığı

✓ Şifre kontrolü

✓ String işlemleri

konularını öğrendik.

Bir sonraki bölümde POINTERLAR (İşaretçiler) konusuna geçeceğiz. Bu konu C dilinin en güçlü ve en korkulan bölümlerinden biridir.
eline sağlık
 
Geri
En Üst