3. hafta karakter dizileri2 karakter dizileri ―char tipli karakterlerden oluşan ve en sonuna z\0...
TRANSCRIPT
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Ü
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’}
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";
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
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ı
• Çok boyutlu dizilerde;
• char isim[5][8] = {“Ayse”, “Hamdi”, “Burak”, “Leyla”, “Ahmet”};
• char sehir[][10] = {“Ankara”, “Sakarya”, “Yozgat”, “Konya”};
6
Değer Atama
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);
}
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 (); }
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 (); }
• 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ı
• 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ı
• 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ı
• 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ı
• 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ı
• 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ı
• 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 (); }
• 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 ();
}
• 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ı
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 (); }
• 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ı
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 (); }
• 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ı
• 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ı
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 (); }
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(); }
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 (); }
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 (); }
• 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