C Kullanarak Bir Dizideki Karakterin İndeksini Bulma
C dilinde dizelerle çalışırken, o dizideki belirli bir karakterin indeksini bilmek istemek yaygındır. strstr
fonksiyonunu kullanarak yapılan geleneksel arama yöntemleri, karakterin bulunduğu yeri gösteren bir gösterici döndürür, ancak eğer özellikle o karakterin konumunu arıyorsanız, zor durumda kalabilirsiniz. Neyse ki, bir çözüm var! strcspn
fonksiyonunu kullanarak bir dizideki bir karakterin indeksini doğru bir şekilde nasıl belirleyeceğinizi inceleyelim.
Problemi Anlamak
C programlamasında dizeleri manipüle etmek bazen karmaşık hale gelebilir. Bir dizide belirli bir karakteri bulmak istediğinizde ve bunun konumunu (gösterici yerine) istiyorsanız, standart kütüphanede hangi araçların mevcut olduğunu merak edebilirsiniz. strstr
gibi, bir alt dizenin ilk örneğini gösteren fonksiyonlara aşina olabilirsiniz, ancak bu durum, tek bir karakterin indeksini doğrudan söylemez.
Çözüm: strcspn
Kullanarak
strcspn
fonksiyonu, bir dizideki bir karakterin indeksini bulmak için oldukça yararlıdır. İşte nasıl çalıştığı:
strcspn
Nedir?
strcspn
, string.h
dosyasında tanımlanan bir standart kütüphane fonksiyonudur. str2
içindeki karakterler bulunmayan str1
‘in başlangıç segmentinin uzunluğunu hesaplar. Bu, str1
içinde str2
‘de tanımlanan herhangi bir karakterin ilk örneğinin indeksini döndüreceği anlamına gelir.
Fonksiyon Prototipi
size_t strcspn (const char * str1, const char * str2);
Pratik Örnek
strcspn
‘i bir dizideki bir karakterin indeksini bulmak için nasıl kullanabileceğinize dair pratik bir örnek:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "fcba73"; // Arama yaptığımız dize
char keys[] = "1234567890"; // Aradığımız karakterler
int i;
// str içindeki keys'den ilk karakterin indeksini bul
i = strcspn(str, keys);
// Pozisyonu göster, sıfır tabanlıdan bir tabanlı indise dönüştürmek için 1 ekle
printf("str içindeki ilk sayı %d. pozisyondadır.\n", i + 1);
return 0;
}
Kodun Açıklaması
- Gerekli başlık dosyalarını dahil ediyoruz: girdi/çıktı fonksiyonları için
stdio.h
ve dize manipülasyon fonksiyonları içinstring.h
. - Arama yapacağımız
str
dizemizi vekeys
içindeki karakterleri tanımlıyoruz. strcspn(str, keys)
çağrısı,str
içinde bulunankeys
karakterlerinden herhangi birinin ilk örneğinin indeksini (0 tabanlı) döndürür.- Son olarak, sonucumuz insan okunabilir bir çıktı için ayar yapılarak (1 tabanlı indeks) yazdırılır.
Ana Noktalar
strcspn
, karakterlerin ilk örneğinin indeksini bulmak için harikadır.- Kullanıcı dostu indeksleme için çıktının ayarlanması gereklidir.
Sonuç
Bir dizideki bir karakterin indeksini bulmak, strcspn
fonksiyonu kullanılarak kolaylıkla gerçekleştirilebilir. Bu fonksiyon, bir karakterin bir dizide nerede göründüğünü sorunsuz bir şekilde bulmanıza yardımcı olur ve C programlarınızdaki dizeleri daha iyi manipüle etmenizi sağlar. Bir sonraki kodlama projenizde bunu denemekten çekinmeyin, bu sayede dizelerinizi arama görevlerinizi nasıl basitleştirdiğini göreceksiniz!