Bagaimana untuk Memisahkan Rentetan dengan strtok() dalam Pengaturcaraan C?

Bagaimana Untuk Memisahkan Rentetan Dengan Strtok Dalam Pengaturcaraan C



Membelah tali adalah penting untuk pelbagai sebab seperti pemprosesan teks, analisis data atau penghuraian, dan bahasa pengaturcaraan C menawarkan pelbagai cara untuk mengendalikan tugas ini. Walau bagaimanapun, fungsi C yang paling popular yang membolehkan rentetan membelah menjadi berbilang token oleh pembatas yang ditentukan ialah strtok() . Sebagai fungsi perpustakaan, ia tersedia dalam perpustakaan C standard yang menyokong operasi rentetan.

Bagaimanakah Fungsi strtok() Berfungsi?

Untuk membelah rentetan menggunakan strtok() , anda perlu memahami cara ia berfungsi terlebih dahulu. The strtok() membaca aksara rentetan input mengikut aksara sehingga ia menjumpai pembatas. Sebaik sahaja pembatas ditemui, strtok() menggantikannya dengan aksara null '\0', dengan berkesan membelah rentetan asal kepada dua bahagian. Penunjuk kepada aksara pertama rentetan kemudian dikembalikan oleh fungsi tersebut. The strtok() sintaks fungsi ialah:

strtok ( char * str , const char * saya kongsi ) ;

The strtok() fungsi mengambil dua hujah- penuding kepada token pertama dalam set token dan rentetan yang memegang aksara pembatas. Ia mengembalikan penuding kepada token seterusnya, yang bermula serta-merta selepas pembatas yang membelah token terakhir. Ia mengembalikan NULL jika tiada lagi token.







Bagaimana untuk Memisahkan Rentetan dengan Strtok() dalam Pengaturcaraan C?

Berikut adalah contoh cara menggunakan strtok() untuk membelah rentetan:



#include

#include

int utama ( ) {

char input [ ] = 'Linux, Petunjuk' ;

char * token ;

token = strtok ( input , ',' ) ;

sementara ( token != NULL ) {

printf ( '%s \n ' , token ) ;

token = strtok ( NULL , ',' ) ;

}

kembali 0 ;

}

Dalam contoh di atas, kami mula-mula mengisytiharkan penunjuk kepada char. Kami kemudian menggunakan strtok() untuk memisahkan rentetan input kepada token. Panggilan pertama daripada strtok() mengambil dua hujah: rentetan input dan rentetan pembatas ','. Token pertama, 'Linux,' ialah token itu strtok() kembali sebagai penunjuk kepada . Kami kemudian menggunakan gelung sementara untuk lelaran melalui rentetan input, menggunakan strtok() dengan penunjuk NULL untuk terus membelah token yang tinggal. Rentetan pembatas sekali lagi diluluskan sebagai hujah kepada strtok() untuk menunjukkan aksara pembatas.



Pengeluaran





Had Fungsi Strtok().

1: Mengubah suai Rentetan Asal

The strtok() fungsi tidak mengembalikan salinan rentetan; sebaliknya, ia mengubah suai rentetan asal. Oleh itu, jika anda perlu mempunyai versi rentetan yang tidak diubah suai selepas membelahnya, anda harus membuat salinan rentetan asal sebelum menggunakan strtok() .



2: Tak segerak

Satu had penting bagi strtok() ialah ia hanya boleh digunakan pada satu rentetan pada satu masa. Dalam erti kata lain, anda tidak boleh menggunakannya untuk menandakan berbilang rentetan secara serentak.

3: Kapasiti Terhad

Satu lagi batasan yang berpotensi ialah itu strtok() mempunyai kapasiti terhad untuk mengendalikan pembatas berulang. Contohnya, jika rentetan anda mempunyai ruang berturut-turut antara perkataan, strtok() menganggapnya sebagai pembatas tunggal. Untuk mengendalikan kes sedemikian, anda perlu menggunakan pendekatan yang berbeza.

Kesimpulan

The strtok() function ialah fungsi yang sangat berguna untuk membelah rentetan dalam pengaturcaraan C. Ia mengambil rentetan input dan rentetan pembatas dan mengembalikan penunjuk kepada token pertama yang ditemui dalam rentetan input. strtok() adalah merosakkan, oleh itu jika anda perlu mengekalkan integriti rentetan asal, adalah dinasihatkan untuk mencipta pendua daripadanya. Sekarang anda tahu cara melakukannya, anda boleh memotong mana-mana rentetan menjadi kepingan yang lebih kecil untuk diproses.