Dizgi (String)
Yazan: Şadi Evren ŞEKER
Bir dilde bulunan ve o dilin tanımlı olan alfabesi içerisindeki sembollerin çeşitli sayılarda ve çeşitli sırada dizilmesi ile elde edilen yazılardır.
Örneğin bir dildeki alfabe aşağıdaki şekilde tanımlı olsun:
∑1 = {0,1}
Buna göre dilimizde sadece “0″ ve “1″ sembolleri tanımlı demektir. Bu dilde örneğin w1=0 veya w2=10101011010 gibi bir dizgi elde etmek mümkündür.
Bir dizginin belirli bir kımını içeren dizgiye ise alt dizgi adı verilir. Örneğin w3=1011 dizgisi w2 dizgisinin bir altdizgisidir.
Ayrıca iki dizginin arka arkaya eklenmesine de üleştirme(concatenation) denilir.Örneğin w1 ile w3 dizgilerinin üleştirilmiş hali w4=01011 olur.
C ile dizgi okuma
C dilinde klavyeden dizgi (String) okumak için kullanılan en basit fonksiyon scanf fonksiyonudur. Bu fonksiyonu basit bir uygulamada aşağıdaki şekilde kullanabiliriz:

Yukarıdaki kodda, 5. satırda tanımlalan karakter dizisi (string) içerisine 7. satırda %s parametresi ile scanf fonksiyonu kullanılarak bir dizgi okunmuştur. Bu dizginin içeriği kodun 8. satırında ekrana basılmıştır.
Örneğin yukarıdaki kod aşağıdaki şekilde çalıştırılabilir:

Görüldüğü üzere, kullanıcı isim olarak “ali” girmiş ve ekranda, girdiği bu dizgiyi görmüştür. Ancak aynı kodu çalıştırarak aşağıdaki şekilde bir dizgi girilirse problem yaşanır:

Yukarıdaki girdide “ali baba ve kirk haramiler” şeklinde 5 kelimeden oluşan bir dizgi girilirken, bu dizginin sadece ilk kelimesi scanf tarafından okunmuştur. Aslında burada bir hata yoktur çünkü scanf fonksiyonu, boşluk karakteri veya satır sonu gibi karakterlere kadar olan dizgileri okur. Yukarıdaki gibi birden fazla kelimeden oluşan dizgiler okunmak istendiğinde, aşağıdaki kodda da gösterilen gets fonksiyonu kullanılabilir:

Yukarıdaki kodda bir önceki koda göre sadece 7. satırda bulunan scanf fonksiyonu, gets fonksiyonu ile değiştirilmiştir. Kodumuzun yeni halini çalıştırdığımızda, aşağıdaki şekilde birden fazla kelime okuyabildiğimizi görürüz:

« Alfabe (Abece, Alphabet) | Alt Dizgi (Substring) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Dizgi (String)' isimli yazı 02 Aug 2008 tarihinde, saat: 01:32 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 713 defa okunmuştur.
Benzer yazıları Automata (otomatlar, özdevinirler), Programlama Dilleri kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
- Evren Kocaturk: ve bunu matlab üzerinde, gerekli...
- Evren Kocaturk: teşekkürler, işime yarayacak gibi,...
- tuncay çavuşoğlu: Şadi bey teşekkürler.Kısa ve...
- attila: hocam bunun bir örneginide Visual Basic diliyle...
Yakın Yazılar
Veritabanı Dizgi İşlemleri (string manipulations on Database)
Dizgi Eş Şekilliliği (String Homomorphism)
strcpy (String Copy, Dizgi Kopyalama)
atoi (ASCII to Integer, ASCII kodun tam sayısı)
String Tokenizer ( Dizgi Parçalayıcı )
Hamming Mesafesi (Hamming Distance)
Dizgi Karşılaştırma (String Comparison)
Nesne serileme ve dizme (Object Serialization , Marshalling)
Tip İnkılabı (Tip Dönüştürme, Type Casting)
Değişken Tip Bağlama (Dynamic Type Binding, Müteharrik Şekil Bağı)
Yahut Şifrelemesi (XOR Encryption)
Özyineli Sayılabilir Diller (Recursively Enumerable Languages)
Arama Algoritmaları (Search Algorithms)
2 geçişli çeviriciler (2 pass assemblers)
Pigpen Şifrelemesi (pigpen Cipher)
Kaba Kuvvet Metin Arama Algoritması (Bruteforce Text Search Algorithm)
Bağlantılar
[...] mesafesi bilgisayar bilimlerinde aynı uzunluktaki iki dizgi (string) arasında, birbirine dönüşmesi için gerekli olan yer değiştirme sayısını verir. Yani [...]
hocam örnegin scanf(”%s”,isim) yazdıgımda program uzun giris yaptıgımda
sapıtıyor gets(isim) yazdıgımda ise o bolümü atlıyor gets’i nasıl
kullanacagımı gösterirmisiniz?
sorunuza cevap olması açısından yukarıdaki yazının içerisine hem scanf hem de gets kullanan basit birer örnek ekliyorum, farkları zaten bu örnekten anlaşılır.
umarım yardımcı olur
başarılar