Download - Karakter dizileri
DİZGELER – KARAKTER DİZİLERİ programlama dilleri 1
- 4. hafta -
Araş. Gör. Nesibe YALÇIN
BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ
MÜHENDİSLİK 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 ‘?’, ‘1’, ‘t’, ‘+’ şeklinde tek tırnak içerisinde yazılır, dizgeler “Bilecik” şeklinde çift tırnak içerisinde yazılırlar.
― “Bilecik” = {‘B’, ‘i’, ‘l’, ‘e’, ‘c’, ‘i’, ‘k’, ‘\0’}
3
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
0x10
0x14
De
rley
ici
4
Değer Atama
char a[]={'C',' ','d','i','l','i','\0'}; char x[] =“programlama”; char x[]; //hatalı NOT: Fonksiyonlarda girdi olarak kullanılabilir. 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”};
• Stringlerde doğrudan kullanılmayan karakterler:
– Çift tırnak karakterini ekrana yaz: \”
– Tek tırnak karakterini ekrana yaz: \’
– Ters bölü karakterini ekrana yaz: \\
– Yüzde karakterini ekrana yaz: %%
5
Değer Atama
6
Karakter Dizileri
#include <stdio.h>
#include <conio.h>
void main() {
char a[]="C dili";
int i=0;
while(a[i]!='\0'){
printf("%c",a[i]);
i++; }
getch (); }
#include <stdio.h>
#include <conio.h>
void main() {
char a[]="C dili";
for(int i=0; i<6;i++)
printf("%c",a[i]);
getch (); }
#include <stdio.h>
#include <conio.h>
void main() {
char a[]="C dili";
printf("%s",a);
getch (); }
7
Karakter Dizileri
#include <stdio.h>
#include <conio.h>
void main() {
char a[]="C dili";
printf("%s\n",a);
a[3]='\0';
printf("%s",a);
getch (); }
8
Karakter Dizileri
#include <stdio.h>
#include <conio.h>
void 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>
#include <conio.h>
void main() {
char bolum[10]="bilgisayar";
printf("%s",bolum);
// puts(bolum);
getch (); }
9
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>
#include <conio.h>
void main() {
char bolum[10];
scanf("%s",bolum);
// gets(bolum);
getch (); }
10
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);
11
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.
12
String Fonksiyonları
• strcat(char str1[],char str2[]): str1 stringinin sonuna str2 stringinin eklenmesini sağlar.
char str1[10]= “sınıf”;
char str2[10]= “C112”;
strcat(str1, str2);
str1’ in yeni hali “sınıf C112”
• strncat(char str1[],char str2[],int n): str1 stringinin sonuna str2 stringinin ilk n karakterinin eklenmesini sağlar.
13
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.
14
String Fonksiyonları
• strrev(char str1[]): str1 stringini ters çevirir.
• strstr(char str1[],char str2[]): str1 stringi içinde str2 stringini arar, ilk karşılaştığı yeri verir.
15
String Fonksiyonları
#include <stdio.h>
#include <conio.h>
#include <string.h>
void 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.
16
String Fonksiyonları
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char girdi[20];
puts("Bir string girin: ");
gets(girdi);
printf("%s\n",strchr(girdi,'a'));
getch ();
}
• 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.
17
String Fonksiyonları
#include <stdio.h>
#include <conio.h>
#include <string.h>
void 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.
18
String Fonksiyonları
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
void 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:
• 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.
• 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.
19
String Fonksiyonları
• 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.
• sizeof(…. a): Donanım sisteminin a değişkenine ya da veri türüne ayırdığı bellek büyüklüğünü verir.
20
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.
21
String Fonksiyonları
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
void main() {
char x;
puts("Bir karakter girin: ");
scanf("%c",&x);
printf("%c",toupper(x));
printf("%c",tolower(x));
getch (); }
22
Uygulama Örnekleri
// #include <string.h>
#include <stdio.h>
#include <conio.h>
void 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(); }
23
Uygulama Örnekleri
#include <stdio.h>
#include <conio.h>
void 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 (); }
24
Uygulama Örnekleri
#include <stdio.h>
#include <conio.h>
#include <string.h>
void 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 …
25
Uygulama Örnekleri