- 17 Kas 2020
- 919
- 503
Stringler(Dizgiler-Harf Dizinleri):
Bazen katar ismi de verilmektedir. Kodlamanın algoritma yapısını anlamak için önemlidirler, bilgisayarın belleğinde karakterler şeklinde tutulurlar. Kelimeler stringleri ifade eder. Örneğin; sınıf, okul, öğrenci vs.
. charx[20]; //20 karakterden oluşan x dizgisi (burada x değişkeninin tipi karakterdir)
Değişkenin karakter, integer, string, bubble tipleri vardır.
Stringler arka planda bilgisayarın belleğinde depolanır. Veri, işlemciye gider ve tekrar adres yolları üzerinden belleğe depolanır. Ayrıca veriler 0 ve 1 olarak bellekte tutuluyor; herbir verinin bellekte bir adresi vardır. (Bu adreslerin değerleri şöyle ifade edilir: 0000-0001-0002......FFFF) Veriler, belleğin string veriyollarından CPU'ya gitmektedir.
CPU'ya gelen veri işlenip tekrar step bölgesine gitmelidir. Adres yolları karşımıza geliyor. Register (Verilerin geçici olarak tutulduğu yer)'lerin içindeki veriyi tutar ve adres yollarıyla belleğe ulaştırır. Belleğin bu bölümünde tutulur, ASCII karakterlere dönüştürülür. 16'lı sayı sistemine dönüştürülerek bellekte tutulur. Yani 0-255 arası sayılar harflere karşılık gelir dönüştürücüler bellekte bu şekilde tutulmasını sağlamaktadır.
Karakter dizilerinde önemli olan konu string'in bittiğinin ifade edilmesi gerektiğidir. Bunun için sonlandırıcı karakter kullanmamız gerekmektedir. (\0 ifadesi eklenir) yani \0 şeklinde sonlandırıcı karakter kullanılır. Bu \0 simgesi NULL (Boş) değeri taşır.
Öncelikle metin tırnak ( ) işareti içine konulur.
[/url][/IMG] Örnek;
Printf(Türk Hack Team );
Bu ifadede tırnak işareti içindeki dizin stringleri ifade etmektedir.
Dizilerde dizinin ismi başlangıç adresini gösterir, bunun için adres operatörü kullanmamıza gerek kalmaz. Adreslerin üzerine gittiğiniz zaman boşluğu görmez. Örneğin, Türk Hack Team yazarken okutmayı gets ile; yazdırmayı puts ile yaparsak oradaki boşluğu algılıyor.
-char *cumle=("Trakya Edirne); //(burada * bir pointer değişkenidir. Belleğe erişmemizi ve karakterlerin bulunduğu adresler üzerinde çalışmamızı sağlar. Pointer değişkeni işaret ettiği adresteki değeri verir.
-İki stringi birleştirmek istersek hazır bir fonksiyon var ama kendimiz de pointer değişkeniyle birleştirebiliriz. Türk Hack Team adres değişkenleri tanımlanıp ilerletilip boşluğu gördüğü an birinin adres değişkenini diğerine atayacak.
char adsoyad[50]="Turk Hack Team ";
char * ptr; //adres değişkeni ptr//
ptr=adsoyad; //başlangıç adresini ptr'ye atadım
printf("isim=%s", ptr); //ptr boşluğu algılaması için atandı// boşluğun kendisini almıyor aslında adresi görüyor//
+++++++
++++
+++
//iki boyutlu açtık ama bir boyut olarak düşündük. 20 karakter düşündük, boşluğu gördüğü an kesecek. Adı girdik atadım okuttuk, tersten yazdırdık.
Eklemek istediğiniz, net açıklanamayan veya hata gördüğünüz yerler varsa yorumlarınızı beklerim.
İyi forumlar diliyorum
Merhaba Türk Hack Team ailemiz, bu konumuzda string'lerin özelliklerinden kısaca bahsedeceğim.
Karakterler dizisinin meydana getirdiği yapıya string (dizgi-harf dizini)denir. Char tipi karakterlerin gruplanmış halleridir.Bazen katar ismi de verilmektedir. Kodlamanın algoritma yapısını anlamak için önemlidirler, bilgisayarın belleğinde karakterler şeklinde tutulurlar. Kelimeler stringleri ifade eder. Örneğin; sınıf, okul, öğrenci vs.
. charx[20]; //20 karakterden oluşan x dizgisi (burada x değişkeninin tipi karakterdir)
Değişkenin karakter, integer, string, bubble tipleri vardır.
Stringler arka planda bilgisayarın belleğinde depolanır. Veri, işlemciye gider ve tekrar adres yolları üzerinden belleğe depolanır. Ayrıca veriler 0 ve 1 olarak bellekte tutuluyor; herbir verinin bellekte bir adresi vardır. (Bu adreslerin değerleri şöyle ifade edilir: 0000-0001-0002......FFFF) Veriler, belleğin string veriyollarından CPU'ya gitmektedir.
CPU'ya gelen veri işlenip tekrar step bölgesine gitmelidir. Adres yolları karşımıza geliyor. Register (Verilerin geçici olarak tutulduğu yer)'lerin içindeki veriyi tutar ve adres yollarıyla belleğe ulaştırır. Belleğin bu bölümünde tutulur, ASCII karakterlere dönüştürülür. 16'lı sayı sistemine dönüştürülerek bellekte tutulur. Yani 0-255 arası sayılar harflere karşılık gelir dönüştürücüler bellekte bu şekilde tutulmasını sağlamaktadır.
Karakter dizilerinde önemli olan konu string'in bittiğinin ifade edilmesi gerektiğidir. Bunun için sonlandırıcı karakter kullanmamız gerekmektedir. (\0 ifadesi eklenir) yani \0 şeklinde sonlandırıcı karakter kullanılır. Bu \0 simgesi NULL (Boş) değeri taşır.
Öncelikle metin tırnak ( ) işareti içine konulur.
Printf(Türk Hack Team );
Bu ifadede tırnak işareti içindeki dizin stringleri ifade etmektedir.
Dizilerde dizinin ismi başlangıç adresini gösterir, bunun için adres operatörü kullanmamıza gerek kalmaz. Adreslerin üzerine gittiğiniz zaman boşluğu görmez. Örneğin, Türk Hack Team yazarken okutmayı gets ile; yazdırmayı puts ile yaparsak oradaki boşluğu algılıyor.
-char *cumle=("Trakya Edirne); //(burada * bir pointer değişkenidir. Belleğe erişmemizi ve karakterlerin bulunduğu adresler üzerinde çalışmamızı sağlar. Pointer değişkeni işaret ettiği adresteki değeri verir.
-İki stringi birleştirmek istersek hazır bir fonksiyon var ama kendimiz de pointer değişkeniyle birleştirebiliriz. Türk Hack Team adres değişkenleri tanımlanıp ilerletilip boşluğu gördüğü an birinin adres değişkenini diğerine atayacak.
char adsoyad[50]="Turk Hack Team ";
char * ptr; //adres değişkeni ptr//
ptr=adsoyad; //başlangıç adresini ptr'ye atadım
printf("isim=%s", ptr); //ptr boşluğu algılaması için atandı// boşluğun kendisini almıyor aslında adresi görüyor//
Kod:
#include <stdio.h>
înclude <ctype.h>
#include<string.h>
int main()
int i;
{ char * adsoyad; //burada adsoyad bir pointer değişkenidir//
printf("ismi giriniz:");
scanf("%s", adsoyad); //pointer değişkenine bir değer girişi yaptım/
int sayac=0 //integer tipinde sayac değişkeni//
while(adsoyad) //adres (adsoyad) hareket halinde iken//
{sayac++; //karakter sayılarını buldurmuş oluyoruz Türk Hack Team bunu tutan adres değişkeni, adsoyad. karakter yde iken sayac= 1 oldu, sayac bir artarsa adres de bir artırmalı adres y harfinde//
adsoyad++;
}
for (i=sayac-1; i>=0; i--) //adresler üzerinden giderek harf sayısı kadar döngü açtık sonra printff ile karakter yazdıracağız //dizinin elemanlarına indis numaralarıyla ulaşırız//
printf("%c",* adsoyad); //adsoyad pointer değişkeni//
getch();
return0;
}
Kod:
int main()
{char * adsoyad;
charx[20];
printf ("adsoyad giriniz:");
scanf("%s", x);
adsoyad=x;
int sayac=0;
int i;
while (adsoyad) //adsoyad boyunca yani adres boyunca
{sayac++;
adsoyad++; //böylelikle karakter sayısını buldum//
for(i=sayac-1; i>=0; i--)
{printf("%c",x[i]);
getch();
return0;
}
Kod:
#include <stdio.h>
#include <string.h>
int main()
{char ad[20]; int i; ints=0;
puts("ismi giriniz:");
gets (ad); //adın bulunduğu adresi çağırıyor//
while (ad[s]!='\0')
s++; //stringler karakter dizisidir//
for(i=s-1; i>=0;i--); //yazıyı tersten yazdırıyorum
printf("%c",ad[,]);
getch();
return0;
}
Kod:
#include <stdio.h>
int main()
{
char adsoyad[5][20]; //iki boyutlu bir dizi
int i;
printf("\n\n");
for(i=0; i<5; i++) {
printf("%d. adi giriniz:", i);
scanf("%s", adsoyad[i]); }
printf(\nGirdiğiniz isimler(soldan başa):\n");
for(i=4; i>=0;i--);
printf("%s"\n, adsoyad[i]);
return0;
}
Eklemek istediğiniz, net açıklanamayan veya hata gördüğünüz yerler varsa yorumlarınızı beklerim.
İyi forumlar diliyorum
Son düzenleme: