C Programlamasında Dizeleri strtok() ile Nasıl Bölebilirim?

C Programlamasinda Dizeleri Strtok Ile Nasil Bolebilirim



Dizeleri bölme metin işleme, veri analizi veya ayrıştırma gibi çeşitli nedenlerle önemlidir ve C programlama dili bu görevi yerine getirmek için sayısız yol sunar. Ancak, izin veren en popüler C işlevi bölme dizesi belirli bir sınırlayıcı tarafından birden çok belirteç içine strtok() . Bir kitaplık işlevi olarak, dize işlemlerini destekleyen standart C kitaplığında bulunur.

strtok() İşlevi Nasıl Çalışır?

kullanarak bir dize bölmek için strtok() , önce nasıl çalıştığını anlamanız gerekir. bu strtok() bir sınırlayıcıyla karşılaşana kadar giriş dizesini karakter karakter okur. Bir sınırlayıcı bulunduğunda, strtok() orijinal dizgiyi etkili bir şekilde iki parçaya bölerek boş karakter '\0' ile değiştirir. Ardından işlev tarafından dizenin ilk karakterine bir işaretçi döndürülür. bu strtok() işlevin sözdizimi şöyledir:

strtok ( karakter * str , sabit karakter * paylaşırım ) ;

bu strtok() işlev iki bağımsız değişken alır - belirteçler kümesindeki ilk simgeye bir işaretçi ve sınırlayıcı karakterleri tutan bir dize. Son belirteci bölen sınırlayıcıdan hemen sonra başlayan bir sonraki belirteç için bir işaretçi döndürür. Başka belirteç yoksa NULL döndürür.







C Programlamasında Strtok() ile Dizeleri Nasıl Bölebilirim?

İşte nasıl kullanılacağına dair bir örnek strtok() bir diziyi bölmek için:



#include

#include

int ana ( ) {

karakter giriş [ ] = 'Linux,İpucu' ;

karakter * jeton ;

jeton = strtok ( giriş , ',' ) ;

sırasında ( jeton != HÜKÜMSÜZ ) {

printf ( '%S \N ' , jeton ) ;

jeton = strtok ( HÜKÜMSÜZ , ',' ) ;

}

geri dönmek 0 ;

}

Yukarıdaki örnekte, önce bir karaktere bir işaretçi bildiririz. daha sonra kullanırız strtok() giriş dizesini belirteçlere bölmek için. ilk arama strtok() iki bağımsız değişken alır: giriş dizesi ve sınırlayıcı dize ''. İlk belirteç olan 'Linux', strtok() işaretçi olarak döndürür . Daha sonra girdi dizgisini yinelemek için bir while döngüsü kullanırız. strtok() kalan belirteçleri bölmeye devam etmek için bir NULL işaretçisi ile. Ayırıcı dize, tekrar bir argüman olarak iletilir. strtok() sınırlayıcı karakterleri belirtmek için.



Çıktı





Strtok() İşlevinin Sınırlamaları

1: Orijinal Dizgiyi Değiştirir

bu strtok() işlev, dizenin bir kopyasını döndürmez; bunun yerine orijinal dizgiyi değiştirir. Bu nedenle, dizeyi böldükten sonra değiştirilmemiş bir sürümüne ihtiyacınız varsa, çağırmadan önce orijinal dizenin bir kopyasını oluşturmalısınız. strtok() .



2: Eşzamansız

Önemli bir sınırlama strtok() bir seferde yalnızca tek bir dizide kullanılabilmesidir. Başka bir deyişle, aynı anda birden çok diziyi simgelemek için kullanamazsınız.

3: Sınırlı Kapasite

Diğer bir potansiyel sınırlama, strtok() tekrarlanan sınırlayıcıları işlemek için sınırlı bir kapasiteye sahiptir. Örneğin, dizginizde kelimeler arasında ardışık boşluklar varsa, strtok() tek bir sınırlayıcı olarak ele alır. Bu tür durumlarla başa çıkmak için farklı bir yaklaşım kullanmanız gerekecek.

Çözüm

bu strtok() işlevi, C programlamasında dizeleri bölmek için çok kullanışlı bir işlevdir. Bir giriş dizesi ve bir sınırlayıcı dize alır ve giriş dizesinde bulunan ilk simgeye bir işaretçi döndürür. strtok() yıkıcıdır, bu nedenle, orijinal dizinin bütünlüğünü korumanız gerekirse, bunun yerine onun bir kopyasını oluşturmanız önerilir. Artık nasıl yapacağınızı bildiğinize göre, işlemek için herhangi bir ipi daha küçük parçalara ayırabilirsiniz.