
String dalam bahasa C adalah array karakter, yang diakhiri dengan karakter null ( ). Menggunakan string properti ini dibandingkan.
Dua string dapat dibandingkan dengan berbagai cara. Dalam tutorial ini, pertama, kita akan melihat fungsi yang ditentukan user 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 user:
Kami akan menulis fungsi stringCompare() 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. /*userDefinedFunction.c*/ 02. 03. #include<stdio.h> 04. 05. int stringCompare( char str1[ ], char str2[ ] ) 06. { 07. int i=0; 08. 09. while( str1[i] == str2[i] ) 10. { 11. if( str1[i] == ' ' || str2[i] == ' ' ) 12. break; 13. i++; 14. } 15. 16. if( str1[i] == ' ' && str2[i] == ' ' ) 17. return 0; 18. else 19. return -1; 20. 21. } 22. 23. 24. int main() 25. { 26. char str1[30],str2[30]; 27. 28. printf("Enter the first string: "); 29. scanf("%[^n]%*c",str1); 30. printf("Enter the second string: "); 31. scanf("%[^n]%*c",str2); 32. 33. if(stringCompare(str1,str2) == 0) 34. printf("strings are equal n"); 35. else 36. printf("strings are not equal n"); 37. 38. return 0; 39. }
Di sini kita melintasi string menggunakan while loop dan variabel i. Ketika karakter sama pada posisi yang sama dari kedua string, nilaiibertambah 1 (baris 13). Jika karakter tidak sama (baris 09) atau kita mencapai akhir string (baris 11), maka while loop adalah break. Setelah perulangan 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 dalamstring.h berkas kepala.
strcmp() fungsi :
Fungsi ini membandingkan dua string yang diteruskan ke fungsi.
Sintaks :
int strcmp(const char *str1, const char *str2)
Nilai kembalian: Kembalikan 0 jika stringnya sama. Mengembalikan bilangan bulat negatif jika nilai ASCII dari karakter pertama yang tidak cocok dari string pertama kurang dari string kedua. Mengembalikan bilangan bulat positif jika nilai ASCII dari karakter pertama yang tidak cocok dari string pertama lebih besar dari string kedua. 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.
Example | Return Value | Explanation |
strcmp( “Halo Dunia”, “Halo Dunia” ) | 0 | Dua string adalah sama. |
strcmp( “Halo”, “Halo Dunia” ) | 0 | String dibandingkan hingga karakter ‘ ‘. String pertama secara default diakhiri dengan ‘ ‘, dan string kedua berisi karakter ‘ ‘ setelah ‘Hello’. |
strcmp( “Halo ″,”Halo Dunia” ) | 0 | String dibandingkan hingga karakter ‘ ‘. |
strcmp( “Halo Dunia”, “Halo Dunia” ) | bilangan bulat negatif | Nilai ASCII dari karakter pertama yang tidak cocok dari string pertama (‘H’) kurang 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 kembalian: Fungsi kembali 0 jika yang pertama nkarakter 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.
Example | Return Value | Explanation |
strncmp( “Halo Dunia”, “Halo Dunia”,5 ) | 0 | 5 karakter pertama sama. |
strncmp( “Halo”, “Halo Dunia”,5 ) | 0 | 5 karakter pertama sama. |
strncmp( “Halo ″,”Halo Dunia”,8 ) | 0 | ‘ ‘ adalah 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(), tetapi di sini string tidak peka huruf besar/kecil.
Sintaksis:
int strcasecmp(const char *str1, const char *str2)
Nilai pengembalian: Sama seperti strcmp(), tetapi string diperlakukan sebagai case-in-sensitive.
Example | Return Value | Explanation |
strcasecmp( “Halo Dunia”, “Halo Dunia” ) | 0</font > | Dua string adalah sama. |
strcasecmp( “Halo”, “Halo Dunia” ) | 0 | String dibandingkan hingga karakter ‘ ‘. String pertama secara default diakhiri dengan ‘ ‘, dan string kedua berisi karakter ‘ ‘ setelah ‘Hello’. |
strcasecmp( “Halo Dunia”, “Halo Dunia” ) | 0 | String adalah case-in-sensitive. Jadi, “Hello World” dan “hello World” adalah sama. |
strncasecmp() fungsi :
Fungsi ini mirip dengan fungsi strncmp(), tetapi di sini string tidak peka huruf besar/kecil.
Sintaksis:
int strncasecmp(const char *str1, const char *str2)
Nilai pengembalian: Sama seperti strncmp(), ketika string diperlakukan sebagai case-in-sensitive.
Example | Return Value | Explanation |
strncasecmp( “Halo Dunia”, “Halo Dunia”,5 ) | 0 | 5 karakter pertama sama. |
strncasecmp( “Halo”, “Halo Dunia”,5 ) | 0 | 5 karakter pertama sama. |
strncasecmp( “Halo ″,”Halo Dunia”,8 ) | 0 | ‘ ‘ adalah setelah 5 karakter pertama di kedua string. Jadi, perbandingan dihentikan setelah 5 bukan 8. |
strncasecmp( “Halo Dunia”, “Halo Dunia”,5 ) | 0 | String adalah case-in-sensitive. 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 dibandingkan.
Sintaksis:
int memcmp(const void *str1, const void *str2, size_t n)
Nilai kembalian: Fungsi mengembalikan 0 jika dua blok memori (nbyte) 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).
Example | Return Value | Explanation |
memcmp( “Halo Dunia”, “Halo Dunia”,5 ) | 0 | 5 karakter pertama sama. |
memcmp( “Halo ″,”Halo Dunia”,8 ) | bilangan bulat negatif | 6 karakter pertama sama, tetapi karakter ke-7 berbeda. Di sini perbandingan tidak berhenti sepertistrncmp() saat mendapatkan karakter ‘ ‘. |
memcmp( “Halo Dunia”, “Halo Dunia”,11 ) | bilangan bulat negatif | Nilai ASCII dari karakter pertama yang tidak cocok dari string pertama (‘H ‘) kurang dari string kedua (‘h’) |
Contoh:
Berikut adalah contoh kode C dari semua fungsi yang dibahas.
01. /*stringCompare.c*/ 02. 03. #include<stdio.h> 04. #include<string.h> 05. 06. int main() 07. { 08. printf("strcmp( "Hello World","Hello World" ) => %dn",strcmp( "Hello World","Hello World" )); 09. printf("strcmp( "Hello","Hello� World" ) => %dn",strcmp( "Hello","Hello World" )); 10. printf("strcmp( "Hello World","hello World" ) => %dn",strcmp( "Hello World","hello World" ) ); 11. printf("strcmp( "Hello���","Hello� World" ) => %dn",strcmp( "Hello ","Hello World" )); 12. 13. printf("n---------------n"); 14. 15. printf("strncmp( "Hello World","Hello World",5 ) => %dn",strncmp( "Hello World","Hello World",5 )); 16. printf("strncmp( "Hello","Hello� World",5 ) => %dn",strncmp( "Hello","Hello World",5 )); 17. printf("strncmp( "Hello���","Hello� World",8 ) => %dn",strncmp( "Hello ","Hello World",8 )); 18. printf("strncmp( "Hello World","hello World",5 ) => %dn",strncmp( "Hello World","hello World",5 )); 19. 20. printf("n---------------n"); 21. 22. printf("strcasecmp( "Hello World","Hello World" ) => %dn",strcasecmp( "Hello World","Hello World" )); 23. printf("strcasecmp( "Hello","Hello� World" ) => %dn",strcasecmp( "Hello","Hello World" )); 24. printf("strcasecmp( "Hello World","hello World" ) => %dn",strcasecmp( "Hello World","hello World" )); 25. 26. printf("n---------------n"); 27. 28. printf("strncasecmp( "Hello World","Hello World",5 ) => %dn",strncasecmp( "Hello World","Hello World",5 ) ); 29. printf("strncasecmp( "Hello","Hello� World",5 ) => %dn",strncasecmp( "Hello","Hello World",5 )); 30. printf("strncasecmp( "Hello���","Hello� World",8 ) => %dn",strncasecmp( "Hello ","Hello World",8 )); 31. printf("strncasecmp( "Hello World","hello World",5 ) => %dn",strncasecmp( "Hello World","hello World",5 )); 32. 33. printf("n---------------n"); 34. 35. printf("memcmp( "Hello World","Hello World",5 ) => %dn",memcmp( "Hello World","Hello World",5 ) ); 36. printf("memcmp( "Hello���","Hello� World",8 ) => %dn",memcmp( "Hello ","Hello World",8 )); 37. printf("memcmp( "Hello World","hello World",11 ) => %dn",memcmp( "Hello World","hello World",11 )); 38. 39. return 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.