Pemrograman C

Pemrograman C Perbandingan String

Pemrograman C Perbandingan String
String dalam bahasa C adalah array karakter, yang diakhiri dengan karakter null (\0). Menggunakan string properti ini dibandingkan.

Dua string dapat dibandingkan dengan berbagai cara. Dalam tutorial ini, pertama, kita akan melihat fungsi yang ditentukan pengguna untuk membandingkan dua string, dan kemudian kita akan melihat beberapa fungsi library bawaan yang dapat digunakan untuk membandingkan dua string dengan sangat mudah. Jadi, mari kita mulai.

Perbandingan string menggunakan fungsi yang ditentukan pengguna:

Kami akan menulis fungsi stringBandingkan() untuk membandingkan string. Kami melintasi string dan membandingkan setiap karakter string sampai kami mencapai akhir salah satu atau keduanya atau salah satu yang tidak cocok ditemukan. Jika traversal dicapai ke ujung kedua senar, maka senarnya cocok; jika tidak, string tidak cocok.

01. /*fungsi yang ditentukan pengguna.c*/
02.
03. #termasuk
04.
05. int stringBandingkan( char str1[ ], char str2[ ] )
06.
07. int i=0;
08.
09. sementara( str1[i] == str2[i] )
10.
11. if( str1[i] == '\0' || str2[i] == '\0' )
12. istirahat;
13. saya++;
14.
15.
16. if( str1[i] == '\0' && str2[i] == '\0' )
17. kembali 0;
18. lain
19. kembali -1;
20.
21.
22.
23.
24. int utama()
25.
26. char str1[30],str2[30];
27.
28. printf("Masukkan string pertama : ");
29. scanf("%[^\n]%*c",str1);
30. printf("Masukkan string kedua : ");
31. scanf("%[^\n]%*c",str2);
32.
33. jika(stringBandingkan(str1,str2) == 0)
34. printf("Stringnya sama \n");
35. lain
36. printf("String tidak sama \n");
37.
38. kembali 0; 39.

Di sini kita melintasi string menggunakan while loop dan variabel saya. Ketika karakter sama pada posisi yang sama dari kedua string, nilai saya bertambah 1 (baris 13). Jika karakter tidak sama (baris 09) atau kita mencapai akhir string (baris 11), maka while loop adalah break. Setelah loop while, kita periksa apakah traversal string tercapai atau tidak (baris 16). Jika traversal dicapai ke ujung kedua string, maka string sama jika tidak.

Perbandingan string menggunakan fungsi perpustakaan bawaan:

Fungsi perpustakaan berikut dapat digunakan untuk perbandingan string:. Semua fungsi dideklarasikan dalam tali.h file header.

strcmp() fungsi :

Fungsi ini membandingkan dua string yang diteruskan ke fungsi.

Sintaksis:

int strcmp(const char *str1, const char *str2)

Nilai kembali: Kembalikan 0 jika stringnya sama. Kembalikan bilangan bulat negatif jika nilai ASCII dari karakter pertama yang tidak cocok dari string pertama kurang dari string kedua. Kembalikan bilangan bulat positif jika nilai ASCII dari karakter pertama yang tidak cocok dari string pertama lebih besar dari string kedua second. Beberapa sistem mengembalikan selisih nilai ASCII dari karakter pertama yang tidak cocok dan beberapa sistem mengembalikan -1 jika nilai ASCII dari karakter pertama yang tidak cocok dari string pertama kurang dari string kedua dan mengembalikan 1 jika nilai ASCII dari karakter pertama yang tidak cocok dari senar pertama lebih besar dari senar kedua.

Contoh Nilai Kembali Penjelasan
strcmp( “Halo Dunia”, “Halo Dunia” ) 0 Dua senar adalah sama.
strcmp( “Halo”, “Halo\0 Dunia” ) 0 String dibandingkan hingga karakter '\0'. String pertama secara default diakhiri dengan '\0', dan string kedua berisi karakter '\0' setelah 'Hello'.
strcmp( “Halo\0\0\0",,”Halo\0 Dunia” ) 0 String dibandingkan hingga karakter '\0'.
strcmp( “Halo Dunia”, “Halo Dunia” ) bilangan bulat negatif Negative Nilai ASCII dari karakter pertama yang tidak cocok dari string pertama ('H') lebih kecil dari string kedua ('h')
strcmp(“Halo Dunia”, “Halo Dunia” ) Bilangan bulat positif Nilai ASCII karakter pertama yang tidak cocok dari string pertama ('h') lebih besar dari string kedua ('H')

strncmp() fungsi :

Fungsi ini mirip dengan fungsi strcmp(), tetapi di sini kita harus menentukan berapa banyak byte yang dibandingkan dengan meneruskan argumen tambahan ke fungsi.

Sintaksis:

int strncmp(const char *str1, const char *str2, size_t n)

Nilai kembali: Fungsi kembali 0 jika yang pertama tidak karakter dari dua string adalah sama; jika tidak, ia mengembalikan bilangan bulat negatif atau positif tergantung pada tanda perbedaan antara nilai ASCII karakter pertama yang tidak cocok.

Contoh Nilai Kembali Penjelasan
strncmp( "Halo Dunia", "Halo Dunia",5, ) 0 5 karakter pertama sama.
strncmp( “Halo”, “Halo\0 Dunia”,5 ) 0 5 karakter pertama sama.
strncmp( “Halo\0\0\0",,”Halo\0 Dunia”,8 ) 0 '\0' setelah 5 karakter pertama di kedua string. Jadi, perbandingan dihentikan setelah 5 bukan 8.
strncmp( "Halo Dunia", "Halo Dunia",5, ) Bilangan bulat negatif Nilai ASCII dari karakter pertama yang tidak cocok dari string pertama ('H') kurang dari string kedua ('h')

strcasecmp() fungsi :

Fungsi ini mirip dengan fungsi strcmp(), tapi di sini stringnya tidak peka huruf besar-kecil.

Sintaksis:

int strcasecmp(const char *str1, const char *str2)

Nilai kembali: Sama dengan strcmp(), tetapi string diperlakukan sebagai peka huruf besar/kecil.

Contoh Nilai Kembali Penjelasan
strcasecmp( “Halo Dunia”, “Halo Dunia” ) 0 Dua senar adalah sama.
strcasecmp( “Halo”, “Halo\0 Dunia” ) 0 String dibandingkan hingga karakter '\0'. String pertama secara default diakhiri dengan '\0', dan string kedua berisi karakter '\0' setelah 'Hello'.
strcasecmp( “Halo Dunia”, “Halo Dunia” ) 0 String adalah peka huruf besar/kecil. Jadi, "Halo Dunia" dan "Halo Dunia" adalah sama.

strncasecmp() fungsi :

Fungsi ini mirip dengan fungsi strncmp(), tapi di sini stringnya tidak peka huruf besar-kecil.

Sintaksis:

int strncasecmp(const char *str1, const char *str2)

Nilai kembali: Sama dengan strncmp(), ketika string diperlakukan sebagai case-in-sensitive.

Contoh Nilai Kembali Penjelasan
strncasecmp( "Halo Dunia", "Halo Dunia",5, ) 0 5 karakter pertama sama.
strncasecmp( “Halo”, “Halo\0 Dunia”,5 ) 0 5 karakter pertama sama.
strncasecmp( “Halo\0\0\0",,”Halo\0 Dunia”,8 ) 0 '\0' setelah 5 karakter pertama di kedua string. Jadi, perbandingan dihentikan setelah 5 bukan 8.
strncasecmp( "Halo Dunia", "Halo Dunia",5, ) 0 String adalah peka huruf besar/kecil. Jadi, "Halo" dan "Halo" adalah sama.

memcmp() fungsi :

Fungsi ini membandingkan dua blok memori byte demi byte. Kita harus melewati dua pointer dari blok memori dan jumlah byte untuk membandingkan.

Sintaksis:

int memcmp(const void *str1, const void *str2, size_t n)

Nilai kembali: Fungsi mengembalikan 0 jika dua blok memori (tidak byte) sama; jika tidak, ia mengembalikan perbedaan antara pasangan byte pertama yang tidak cocok (byte ditafsirkan sebagai objek char yang tidak ditandatangani, kemudian dipromosikan ke int).

Contoh Nilai Kembali Penjelasan
memcmp( "Halo Dunia", "Halo Dunia",5, ) 0 5 karakter pertama sama.
memcmp( “Halo\0\0\0",,”Halo\0 Dunia”,8 ) bilangan bulat negatif Negative 6 karakter pertama sama, tetapi karakter ke-7 berbeda. Di sini perbandingan tidak berhenti seperti strncmp() saat mendapatkan karakter '\0'.
memcmp( “Halo Dunia”, “Halo Dunia”,11 ) bilangan bulat negatif Negative Nilai ASCII dari karakter pertama yang tidak cocok dari string pertama ('H') lebih kecil dari string kedua ('h')

Contoh:

Berikut ini adalah contoh kode C dari semua fungsi yang dibahas:.

01. /*stringBandingkan.c*/
02.
03. #termasuk
04. #termasuk
05.
06. int utama()
07.
08. printf("strcmp("Halo Dunia",,"Halo Dunia" ) => %d\n",strcmp("Halo Dunia","Halo Dunia" ));
09. printf("strcmp("Halo",,"Halo\0 Dunia" ) => %d\n",strcmp( "Halo",,"Halo\0 Dunia" ));
10. printf("strcmp("Halo Dunia","halo Dunia" ) => %d\n",strcmp( "Halo Dunia","halo Dunia" ) );
11. printf("strcmp( "Halo\\0\\0\\0",,"Halo\\0 Dunia" ) => %d\n",strcmp( "Halo\0\0\0",,"Halo\0 Dunia" ));
12.
13. printf("\n---------------\n");
14.
15. printf("strncmp("Halo Dunia",,"Halo Dunia",5 ) => %d\n",strncmp("Halo Dunia",,"Halo Dunia",5 ));
16. printf("strncmp( "Halo",,"Halo\0 Dunia",5 ) => %d\n",strncmp( "Halo",,"Halo\0 Dunia",5 ));
17. printf("strncmp( "Halo\\0\\0\\0",,"Halo\\0 Dunia",8 ) => %d\n",strncmp( "Halo\0\0\0",,"Halo \0 Dunia",8 ));
18. printf("strncmp("Halo Dunia",,"halo Dunia",5 ) => %d\n",strncmp("Halo Dunia",,"halo Dunia",5 ));
19.
20. printf("\n---------------\n");
21.
22. printf("strcasecmp("Halo Dunia",,"Halo Dunia" ) => %d\n",strcasecmp("Halo Dunia",,"Halo Dunia" ));
23. printf("strcasecmp("Halo",,"Halo\0 Dunia" ) => %d\n",strcasecmp( "Halo",,"Halo\0 Dunia" ));
24. printf("strcasecmp("Halo Dunia","halo Dunia" ) => %d\n",strcasecmp("Halo Dunia","halo Dunia" ));
25.
26. printf("\n---------------\n");
27.
28. printf("strncasecmp("Halo Dunia",,"Halo Dunia",5 ) => %d\n",strncasecmp( "Halo Dunia",,"Halo Dunia",5 ) );
29. printf("strncasecmp( "Halo",,"Halo\0 Dunia",5 ) => %d\n",strncasecmp( "Halo",,"Halo\0 Dunia",5 ));
30. printf("strncasecmp( "Halo\\0\\0\\0",,"Halo\\0 Dunia",8 ) => %d\n",strncasecmp( "Halo\0\0\0",,"Halo \0 Dunia",8 ));
31. printf("strncasecmp("Halo Dunia",,"halo Dunia",5 ) => %d\n",strncasecmp("Halo Dunia",,"halo Dunia",5 ));
32.
33. printf("\n---------------\n");
34.
35. printf("memcmp("Halo Dunia",,"Halo Dunia",5 ) => %d\n",memcmp( "Halo Dunia",,"Halo Dunia",5 ) );
36. printf("memcmp( "Halo\\0\\0\\0",,"Halo\\0 Dunia",8 ) => %d\n",memcmp( "Halo\0\0\0",,"Halo \0 Dunia",8 ));
37. printf("memcmp("Halo Dunia","halo Dunia",11 ) => %d\n",memcmp("Halo Dunia","halo Dunia",11 ));
38.
39. kembali 0; 40.

Kesimpulan:

Jadi, dalam tutorial ini, kita telah melihat bagaimana string dapat dibandingkan dengan berbagai cara. Seperti yang telah kita lihat, fungsi stringCompare() mengembalikan -1 untuk string yang tidak sama, tetapi ini dapat dimodifikasi sehingga mengembalikan nilai ASCII dari karakter yang tidak cocok. Anda dapat menggunakannya dalam kode Anda, yang paling cocok untuk Anda.

Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...
Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...
10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...