3. hafta karakter dizileri2 karakter dizileri ―char tipli karakterlerden oluşan ve en sonuna z\0...

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Ü

Upload: others

Post on 25-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

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