28
3. Hafta Karakter Dizileri Dr. Öğr. Üyesi Nesibe YALÇIN https://nesibeyalcin.wordpress.com/bsm104/ BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE TASARIM FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

3. Hafta – Karakter Dizileri

Dr. Öğr. Üyesi Nesibe YALÇIN

https://nesibeyalcin.wordpress.com/bsm104/

BARTIN ÜNİVERSİTESİ

MÜHENDİSLİK, MİMARLIK VE TASARIM FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Page 2: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

2

Karakter Dizileri

― char tipli karakterlerden oluşan ve en sonuna ‘\0’ (boş, NULL) karakteri eklenmiş dizilerdir.

― String, katar, dizge, dizgi de denir.

― Karakterler ‘a’, ‘?’, ‘1’, ‘t’, ‘+’ şeklinde tek tırnak içerisinde yazılır, dizgeler “Bartın” şeklinde çift tırnak içerisinde yazılırlar.

“Bartın” = {‘B’, ‘a’, ‘r’, ‘t’, ‘ı’, ‘n’, ‘\0’}

Page 3: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

3

Karakter Dizileri

― char a[]= “C dili”; ― char a[]= {‘C’, ‘ ’, ‘d, ‘i’, ‘l’, ‘i’, ‘\0’};

Stringlerde doğrudan kullanılmayan karakterler: • Çift tırnak karakterini ekrana yaz: \” • Ters bölü karakterini ekrana yaz: \\

char c[30]="Alt satira gecmek icin: \\n";

Page 4: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

4

Değer Atama

char a[] =“C dili”; Derleyici, karakter sayısına göre otomatik olarak dizi boyutunu ayarlıyor.

0 1 2 3 4 5 6

C d i l i \0

Adres Veri

0x00

0x01 67 ‘C’

0x02 32 ‘ ’

0x03 100 ‘d’

0x04 105 ‘i’

0x05 108 ‘l’

0x06 105 ‘i’

0x07 0 ‘\0’

0x08

0x09

0x0A

0x0B

De

rley

ici

Page 5: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

5

Değer Atama

char a[]={'C',' ','d','i','l','i','\0'}; char x[] =“programlama”; char x[]; // hatalı char x[25]; x[]=“programlama”; //hatalı x=“programlama”; //hatalı

Page 6: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• Çok boyutlu dizilerde;

• char isim[5][8] = {“Ayse”, “Hamdi”, “Burak”, “Leyla”, “Ahmet”};

• char sehir[][10] = {“Ankara”, “Sakarya”, “Yozgat”, “Konya”};

6

Değer Atama

Page 7: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

7

Karakter Dizileri

#include <stdio.h>

int main() {

char a[]="C dili";

int i=0;

while(a[i]!='\0'){

printf("%c",a[i]);

i++; }

}

#include <stdio.h>

int main() {

char a[]="C dili";

for(int i=0; i<6;i++)

printf("%c",a[i]);

}

#include <stdio.h>

int main() {

char a[]="C dili";

printf("%s",a);

// puts(a);

}

Page 8: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

8

Karakter Dizileri

#include <stdio.h>

#include <conio.h>

int main() {

char a[]="C dili";

printf("%s\n",a);

a[3]='\0';

printf("%s",a);

getch (); }

Page 9: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

9

Karakter Dizileri

#include <stdio.h>

#include <conio.h>

int main() {

char a[]="C dili";

printf("%s\n",a);

a[6]=‘m';

printf("%s",a);

getch (); }

Page 10: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• puts(char str []): Ekrana stringi ekrana yazdırdıktan sonra imleci bir sonraki satıra geçirir.

#include <stdio.h>

int main() {

char bolum[10]="bilgisayar";

printf("%s\n",bolum); // puts(bolum);

}

10

String Fonksiyonları

Page 11: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• gets(char str[]): Girdi olarak string almak için kullanılır, stringin sonuna ‘\0’, null karakterini otomatik olarak ekler.

#include <stdio.h>

int main() {

char bolum[10];

scanf("%s",bolum); // gets(bolum);

}

11

String Fonksiyonları

Page 12: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• string.h kütüphanesinde yer alanlar:

• strlen(char str[]): Bir string (dizge) içindeki karakter sayısını bulmak için kullanılır.

int adet=0;

while(str[adet]!=‘\0’)

adet++;

ya da

adet=strlen(str);

12

String Fonksiyonları

Page 13: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• strcpy(char str1[],char str2[]): str2 stringini str1 stringine kopyalama işlemini yapar.

char ad[10];

strcpy(ad,"elanur");

• strncpy(char str1[],char str2[],int n): str2 stringindeki ilk n adet karakteri str1 stringine kopyalama işlemini yapar.

13

String Fonksiyonları

Page 14: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• strcat(char str1[],char str2[]): str1 stringinin sonuna str2 stringinin eklenmesini sağlar.

char str1[10]= “sınıf”;

char str2[10]= “Z04”;

strcat(str1, str2);

str1’ in yeni hali “sınıf Z04”

• strncat(char str1[],char str2[],int n): str1 stringinin sonuna str2 stringinin ilk n karakterinin eklenmesini sağlar.

14

String Fonksiyonları

Page 15: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• strcmp(char str1[],char str2[]): str1 ve str2 stringlerini karşılaştırır: Eşit ise 0, str1 stringi sözlükte daha önce geliyorsa -1, str2 stringi daha önce geliyorsa 1 değerini döndürür. – strcmp(“Ankara”, “Ankara”) 0 – strcmp(“Ankara”, “Antalya”) -1 – strcmp(“Antalya”, “Ankara”) 1

• strncmp(char str1[],char str2[],int n): str1 ve str2

stringlerinin ilk n karakterlerinin karşılaştırılmasını sağlar.

15

String Fonksiyonları

Page 16: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• strstr(char str1[],char str2[]): str1 stringi içinde str2 stringini arar, ilk karşılaştığı yeri verir.

16

String Fonksiyonları

#include <stdio.h>

#include <conio.h> #include <string.h>

int main() {

char girdi[20];

puts("Bir string girin: ");

gets(girdi);

printf("%s\n",strstr(girdi,"al"));

getch (); }

Page 17: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• strchr(char str1[],char x): str1 stringi içinde x karakterini arar, ilk karşılaştığı yeri verir.

17

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <string.h>

int main() {

char girdi[20];

puts("Bir string girin: ");

gets(girdi);

printf("%s\n",strchr(girdi,'a'));

getch ();

}

Page 18: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• strrev(char str1[]): str1 stringini ters çevirir.

• strlwr(char str1 []): str1 stringindeki büyük harfleri küçük harflere çevirir.

• strupr(char str1 []): str1 stringindeki küçük harfleri büyük harflere çevirir.

18

String Fonksiyonları

Page 19: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

19

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <string.h>

int main() {

char ad[]="NeSiBe YaLCiN";

strupr(ad);

printf("%s\n",ad);

strlwr(ad);

printf("%s",ad);

getch (); }

Page 20: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• ctype.h kütüphanesinde yer alanlar:

• isalnum(char x): Girilen x karakterin alfabetik ya da nümerik olup olmadığını sorgular.

• isalpha(char x): x bir harf ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• isdigit(char x): x bir sayı ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

20

String Fonksiyonları

Page 21: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

21

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

int main() {

char x;

puts("Bir karakter girin: ");

scanf("%c",&x);

if(isalnum(x))

printf("Alfabetik/Numerik");

else

printf("Alfabetik/Numerik degil");

getch (); }

Page 22: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• ctype.h kütüphanesinde yer alanlar:

• isspace(char x): x boşluk, yeni satır veya tab karakteri gibi bir karakterse sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• isupper(char x): x büyük bir harf ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

• islower(char x): x küçük bir harf ise sıfırdan farklı, diğer durumlarda sıfır değerini döndürür.

22

String Fonksiyonları

Page 23: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• toupper(char x): x’ in değerinin büyük harf karşılığını verir.

• tolower(char x): x’ in değerinin küçük harf karşılığını verir.

• sizeof(…. a): Donanım sisteminin a değişkenine ya da veri türüne ayırdığı bellek büyüklüğünü verir.

23

String Fonksiyonları

Page 24: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

24

String Fonksiyonları

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

int main() {

char x;

puts("Bir karakter girin: ");

scanf("%c",&x);

printf("%c",toupper(x));

printf("%c",tolower(x));

getch (); }

Page 25: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

25

Uygulama-1

// #include <string.h>

#include <stdio.h>

#include <conio.h>

int main() {

char str[20]="Muhendislik";

//for(int i=0;i<strlen(str);i++)

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

for(int j=0;j<i+1;j++)

printf("%c",str[j]);

printf("\n"); }

getch(); }

Page 26: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

26

Uygulama-2

#include <stdio.h>

#include <conio.h>

int main() {

char girdi[20];

int i=0,sayac=0;

puts("Bir string girin: ");

gets(girdi);

while(girdi[i] != '\0'){

if( girdi[i] == 'a')

sayac++;

i++; }

printf("'a' karakteri sayisi = %d\n",sayac);

printf("Toplam karakteri sayisi = %d\n",i);

printf("Ayrilan bellek buyuklugu %d byte",sizeof(girdi));

getch (); }

Page 27: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

27

Uygulama-3

#include <stdio.h>

#include <conio.h>

#include <string.h>

int main() {

char girdi[20];

int sayac=0;

puts("Bir string girin: ");

do{

gets(girdi);

sayac++;

}while( strcmp(girdi, "Ankara*06")!=0);

printf("%d seferde bildiniz\n",sayac);

getch (); }

Page 28: 3. Hafta Karakter Dizileri2 Karakter Dizileri ―char tipli karakterlerden oluşan ve en sonuna Z\0 (boş, NULL) karakteri eklenmiş dizilerdir. ―String, katar, dizge, dizgi de denir

• Kullanıcı tarafından girilen bir karakter dizisi içindeki boşluk karakterini çıkaran programı C dilinde yazınız.

• strstr fonksiyonu ile aynı görevi yapan void str_arama(char a[],char b[]) isimli kendi fonksiyonunu yazınız.

• Kullanıcı tarafından girilen bir stringin Palindrom olup olmadığını bulan fonksiyonu yazınız. 2141412, ata, kazak, Ey Edip Adanada pide ye …

28

Uygulama Örnekleri