Stringler

noktalıvirgül

Deneyimli Moderatör
17 Kas 2020
918
502
Stringler(Dizgiler-Harf Dizinleri):
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 string’leri 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.
String’ler 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.
oUcYy.jpg
[/url][/IMG]​
Örnek;
Printf(“Türk Hack Team ”);
Bu ifadede tırnak işareti içindeki dizin “string”leri 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 string’i 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 y’de 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++;    //string’ler 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;
}
//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
 
Son düzenleme:

noktalıvirgül

Deneyimli Moderatör
17 Kas 2020
918
502
Eline sağlık ";".O ortadaki resim ne öyle :D
Bir ekran görüntüsü ekleyeyim dedim ama mantıksız oldu değil mi hemen siliyorum :):)

Aslında kodlarken ekran görüntüsü alabilirdim, ama sorunlar oluştu o an C çalışmıyordu. Şu anda da bilgisayarda program yok maalesef
 
Moderatör tarafında düzenlendi:

CyberXhackk

Kıdemli Üye
13 Mar 2016
3,132
10
C/C++ Dev.
Kodlariniz yanlis ve bolca tanimsiz davranis iceriyor. Bilgi kirliligi de bir hayli fazla. Ornegin 1. kodunuzda wild bir pointeri dereference ediyorsunuz. Hatali ve yanlis kod.
 

noktalıvirgül

Deneyimli Moderatör
17 Kas 2020
918
502
Kodlariniz yanlis ve bolca tanimsiz davranis iceriyor. Bilgi kirliligi de bir hayli fazla. Ornegin 1. kodunuzda wild bir pointeri dereference ediyorsunuz. Hatali ve yanlis kod.

Sağolun.. Açıkçası kullanışlı olması için forum kuralı gereği kod içine aldım ama hocamız konuyu anlatırken yazdığım ve açıklamalarını karşılarına yazmak için rastgele yazılmıştı. Yapıcı eleştiriniz için teşekkür ederim
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.