Hướng dẫn dùng strcmo trong PHP

Hàm strcmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Hướng dẫn dùng strcmo trong PHP

Hướng dẫn dùng strcmo trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú phápstrcmp( $str1, $str2);

Trong đó:

  • $str1, $str2 là hai chuỗi cần so sánh.

Ví dụ

Code

$var1 = "Freetuts.net";
$var2 = "freetuts.net";
if (strcmp($var1, $var2) == 0) {
echo "hai chuỗi giống nhau 
"; }else{ echo "hai chuỗi không giống nhau
"; }

Kết quả

hai chuỗi không giống nhau 

Code

$var1 = "hello world";
$var2 = "hello";
echo strcmp($var1, $var2);	

Tham khảo: php.net

Bài viết này được đăng tại [free tuts .net]

Hàm strcmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Nội dung chính

  • So sánh 2 ký tự char trong C
  • So sánh bằng giữa 2 char trong C
  • So sánh lớn nhỏ giữa 2 char trong C
  • So sánh 2 chuỗi trong C | Hàm strcmp()
  • So sánh 2 chuỗi trong C với số ký tự chỉ định| Hàm strncmp()
  • Tổng kết

Nội dung chính

  • So sánh 2 ký tự char trong C
  • So sánh bằng giữa 2 char trong C
  • So sánh lớn nhỏ giữa 2 char trong C
  • So sánh 2 chuỗi trong C | Hàm strcmp()
  • So sánh 2 chuỗi trong C với số ký tự chỉ định| Hàm strncmp()
  • Tổng kết

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú phápstrcmp( $str1, $str2);

Trong đó:

  • $str1, $str2 là hai chuỗi cần so sánh.

Ví dụ

Code

$var1 = "Freetuts.net";
$var2 = "freetuts.net";
if (strcmp($var1, $var2) == 0) {
echo "hai chuỗi giống nhau 
"; }else{ echo "hai chuỗi không giống nhau
"; }

Kết quả

hai chuỗi không giống nhau 

Code

$var1 = "hello world";
$var2 = "hello";
echo strcmp($var1, $var2);	

Tham khảo: php.net

Bài viết này được đăng tại [free tuts .net]

Hàm strcmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Nội dung chính

  • So sánh 2 ký tự char trong C
  • So sánh bằng giữa 2 char trong C
  • So sánh lớn nhỏ giữa 2 char trong C
  • So sánh 2 chuỗi trong C | Hàm strcmp()
  • So sánh 2 chuỗi trong C với số ký tự chỉ định| Hàm strncmp()
  • Tổng kết

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú phápstrcmp( $str1, $str2);

Trong đó:

  • $str1, $str2 là hai chuỗi cần so sánh.

Ví dụ

Code

$var1 = "Freetuts.net";
$var2 = "freetuts.net";
if (strcmp($var1, $var2) == 0) {
echo "hai chuỗi giống nhau 
"; }else{ echo "hai chuỗi không giống nhau
"; }

Kết quả

hai chuỗi không giống nhau 

Code

$var1 = "hello world";
$var2 = "hello";
echo strcmp($var1, $var2);	

Tham khảo: php.net

Bài viết này được đăng tại [free tuts .net]

Hàm strcmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú phápstrcmp( $str1, $str2);

Trong đó:

  • $str1, $str2 là hai chuỗi cần so sánh.

Ví dụ

Code

$var1 = "Freetuts.net";
$var2 = "freetuts.net";
if (strcmp($var1, $var2) == 0) {
echo "hai chuỗi giống nhau 
"; }else{ echo "hai chuỗi không giống nhau
"; }

Kết quả

hai chuỗi không giống nhau 

Code

$var1 = "hello world";
$var2 = "hello";
echo strcmp($var1, $var2);	

Tham khảo: php.net

Bài viết này được đăng tại [free tuts .net]

Hàm strncmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Nội dung chính

  • So sánh 2 ký tự char trong C
  • So sánh bằng giữa 2 char trong C
  • So sánh lớn nhỏ giữa 2 char trong C
  • So sánh 2 chuỗi trong C | Hàm strcmp()
  • So sánh 2 chuỗi trong C với số ký tự chỉ định| Hàm strncmp()
  • Tổng kết

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm strncmp() có cách sử dụng khá giống với strcmp() nhưng có điểm khác là strncmp() chỉ lấy một số kí tự nhất định của 2 chuỗi để so sánh.

Cú pháp

Cú phápstrncmp( $str1, $str2, $len);

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • $str1, $str2 là 2 chuỗi cần so sánh.
  • $len là số kí tự của 2 chuỗi tính từ đầu các chuỗi mà hàm strncmp() sẽ dùng để so sánh.

Ví dụ

Code

$str1 = "freetuts.net";
$str2 = "freetuts";
$result = strncmp($str1, $str2, 4);
echo $result . "
"; echo strcmp($str1, $str2);

Tham khảo: php.net

Hàm strncmp() sẽ so sánh hai chuỗi phân biệt chữ hoa chữ thường, hàm trả về số âm nếu chuỗi thứ nhất nhỏ hơn chuỗi thứ 2, trả về 0 nếu hai chuỗi bằng nhau và trả về số dương nếu chuỗi thứ nhất lớn hơn chuỗi thứ 2.

Hàm strncmp() có cách sử dụng khá giống với strcmp() nhưng có điểm khác là strncmp() chỉ lấy một số kí tự nhất định của 2 chuỗi để so sánh.

Cú pháp

Cú phápstrncmp( $str1, $str2, $len);

Trong đó:

  • $str1, $str2 là 2 chuỗi cần so sánh.
  • $len là số kí tự của 2 chuỗi tính từ đầu các chuỗi mà hàm strncmp() sẽ dùng để so sánh.

Ví dụ

Code

$str1 = "freetuts.net";
$str2 = "freetuts";
$result = strncmp($str1, $str2, 4);
echo $result . "
"; echo strcmp($str1, $str2);

Tham khảo: php.net

Hướng dẫn cách so sánh chuỗi trong C. Bạn sẽ học được cách so sánh 2 ký tự char bằng các toán tử so sánh, cũng như là cách sử dụng các hàm so sánh chuỗi trong C như strcmp() và strncmp() sau bài học này.

Chúng ta có 3 phương pháp để so sánh chuỗi trong C như sau:

  • Toán tử so sánh: so sánh 2 ký tự char trong C
  • Hàm strcmp() : so sánh 2 chuỗi trong C
  • Hàm strncmp() : so sánh 2 chuỗi trong C với số ký tự chỉ định

So sánh 2 ký tự char trong C

Để so sánh 2 ký tự char trong C, chúng ta sử dụng tới các toán tử so sánh và so sánh mã ký tự tạo nên các ký tự char đó.

Các toán tử có thể sử dụng như là toán tử so sánh bằng , hoặc là toán tử so sánh lớn nhỏ mà chúng ta đã được học tại bài Toán tử so sánh trong C và các phép so sánh chuỗi, số.

So sánh bằng giữa 2 char trong C

Khi so sánh 2 ký tự char trong C sử dụng toán tử bằng ==, nếu như toàn bộ giá trị của các phần tử trong hai ký tự đều giống nhau, giá trị true được trả về, và ngược lại thì giá trị false sẽ trả về nếu chúng khác nhau. Ví dụ:

'a' == 'a'


'a' == 'b'

Tương tự chúng ta sử dụng toán tử so sánh khác != để kiểm tra hai ký tự char có khác nhau trong C như sau:

'a' != 'a'


'a' != 'b'

Lại nữa, các phép so sánh ký tự bao gồm cả so sánh đồng nhất sẽ phân biệt chữ hoa và chữ thường trong ký tự. Nếu hai ký tự giống nhau về ký tự nhưng khác nhau về ký tự chữ hoa chữ thường thì cũng không được coi là giống nhau.

'a' == 'a'


'a' != 'a'

So sánh lớn nhỏ giữa 2 char trong C

Chúng ta sử dụng các toán tử so sánh như <, <=, >, >= để tìm mối quan hệ lớn nhỏ giữa 2 ký tự char trong C.

Ví dụ:

'a' < 'b'


'a' <= 'A'

Khác với so sánh số trong C, chúng ta không thể sử dụng trực tiếp giá trị của ký tự để so sánh lớn nhỏ giữa ký tự trong C. Và thay vì sử dụng giá trị của ký tự thì chúng ta sẽ so sánh các mã ký tự ASSCII tạo nên chúng.

Để kiểm tra mã ký tự ASSCII của một ký tự, chúng ta sử dụng tới hàm printf() với định dạng %d trong C như sau:

printf("Ma ascii cua a:%d\n", 'a'); 
printf("Ma ascii cua A:%d\n", 'A');
printf("Ma ascii cua b:%d\n", 'b');
  • Xem thêm: Mã ký tự trong C (Character code)

Khi so sánh lớn nhỏ hai ký tự đơn, chúng ta đơn giản so sánh mã ký tự ASSCII của chúng. Ví dụ, do điểm mã unicode của ký tự a là 97 sẽ lớn hơn của ký tự A à 65 nên phép so sánh sau sẽ cho ra kết quả true:

'a' > 'A'

Lưu ý là chúng ta cũng có thể sử dụng toán tử so sánh để so sánh 2 chuỗi trong C, tuy nhiên việc so sánh phải dựa vào mã ký tự của nhiều ký tự trong chuỗi sẽ khiến chúng ta bối rối khi xử lý, do đó bạn nên sử dụng các hàm so sánh chuỗi trong Cở dưới đây thì sẽ tốt hơn là dùng toán tử so sánh.

So sánh 2 chuỗi trong C | Hàm strcmp()

Hàm strcmp() trong C là một hàm có sẵn trong header file string.h, giúp chúng ta tìm hiệu mã ký tự ASSCII giữa 2 chuỗi trong C. Thông qua hiệu này, chúng ta có thể so sánh 2 chuỗi trong C và tìm ra quan hệ bằng hay là lớn nhỏ giữa chúng.

Chúng ta sử dụng hàm strcmp() để so sánh 2 chuỗi trong C với cú pháp sau đây:

strcmp(str1, str2)

Trong đó str1str2 là 2 chuỗi cần được so sánh.

Hàm strcmp() sẽ tiến hành so sánh bắt đầu từ ký tự đầu tiên trong hai chuỗi, và nếu chúng giống nhau, các ký tự tiếp theo sẽ lần lượt được so sánh cho tới khi xuất hiện cặp ký tự khác nhau đầu tiên trong hai chuỗi. Khi đó, mã ký tự ASSCII của ký tự này sẽ đại diện cho cả chuỗi và được dùng để so sánh lớn nhỏ.

Sau khi đã xác định được cặp ký tự đầu tiên khác nhau giữa 2 chuỗi, hàm strcmp() sẽ trả về hiệu mã ký tự ASSCII giữa chúng, và bằng cách so sánh giá trị này với số 0, chúng ta có thể so sánh 2 chuỗi như sau:

Biểu thứcGiá trị trả vềKết quả
strcmp(str1, str2) > 0 str1 > str2
strcmp(str1, str2) = 0 str1 = str2
strcmp(str1, str2) < 0 str1 < str2

Và chúng ta cần phải viết thêm dòng #include để load header file string.h để có thể sử dụng được hàm strlen() trong chuơng trình.

Ví dụ cụ thể, chúng ta sử dụng chương trình sau đây để tiến hành so sánh lớn nhỏ giữa 2 chuỗi trong C.

#include
#include
#include

int main(void)
{
char s1[] = "ab";
char s2[] = "aAb";

printf("Ma ascii cua a:%d\n", 'a');
printf("Ma ascii cua A:%d\n", 'A');
printf("Ma ascii cua b:%d\n", 'b');
printf("Hieu ma ascii: %d\n",strcmp(s1,s2));

if(strcmp(s1,s2)==0){
printf("%s bang %s", s1,s2);
} else if(strcmp(s1,s2)>0){
printf("%s lon hon %s", s1,s2);
} else
printf("%s nho hon %s", s1,s2);

return 0;
}

Kết quả chương trình:

Ma ascii cua a:97
Ma ascii cua A:65
Ma ascii cua b:98
Hieu ma ascii: 33
ab lon hon aAb

Ở ví dụ trên, cặp ký tự đầu tiên khác nhau giữa hai chuỗi ban đầu là bA, do đó hàm strcmp() khi so sánh 2 chuỗi s1 và s2 thì thực chất chính là so sánh giữa 2 ký tự này.

So sánh 2 chuỗi trong C với số ký tự chỉ định| Hàm strncmp()

Ở phần trên chúng ta đã biết cách so sánh nội dung toàn bộ giữa 2 chuỗi với nhau trong C rồi.

Trong trường hợp bạn chỉ muốn so sánh một số ký tự chỉ định giữa 2 chuỗi, ví dụ như là chỉ so sánh 3 ký tự đầu tiên trong mỗi chuỗi ban đầu chẳng hạn, khi đó chúng ta sẽ dùng tới Hàm strncmp().

Hàm strncmp() trong C là một hàm có sẵn trong header file string.h, giúp chúng ta tìm hiệu mã ký tự ASSCII giữa 2 chuỗi trong C. Thông qua hiệu này, chúng ta có thể so sánh 2 chuỗi trong C và tìm ra quan hệ bằng hay là lớn nhỏ giữa chúng.

Chúng ta sử dụng hàm strncmp() để so sánh 2 chuỗi trong C với số ký tự chỉ định với cú pháp sau đây:

strncmp(str1, str2,n)

Trong đó str1str2 là 2 chuỗi cần được so sánh, và n là phạm vi số ký tự tối đa tính từ đầu hai chuỗi được dùng để so sánh.

Giống như Kiyoshi đã hướng dẫn về hàm strcmp() ở trên thì hàm strncmp() cũng sử dụng hiệu mã ký tự ASSCII giữa hai chuỗi để so sánh chúng. Điểm khác biệt duy nhất đó là thay vì so sánh trên toàn bộ 2 chuỗi ban đầu, thì chúng ta chỉ tiến hành so sánh trên một phạm vi được quyết định bởi đối số n khi dùng hàm strcmp() mà thôi.

Ví dụ cụ thể:

#include
#include
#include

int main(void)
{
char s1[10] = "abA";
char s2[10] = "aba";
int n = 2;

printf("Ma ascii cua a:%d\n", 'a');
printf("Ma ascii cua A:%d\n", 'A');
printf("Ma ascii cua b:%d\n", 'b');
printf("Hieu ma ascii: %d\n",strncmp(s1,s2,n));

if(strncmp(s1,s2,2)==0){
printf("%d ky tu dau cua 2 chuoi bang nhau", n);
} else if(strncmp(s1,s2,2)>0){
printf("%d ky tu dau cua %s lon hon %s", n, s1, s2);
} else
printf("%d ky tu dau cua %s nho hon %s", n, s1, s2);

return 0;
}

Kết quả:

Ma ascii cua a:97
Ma ascii cua A:65
Ma ascii cua b:98
Hieu ma ascii: 0
2 ky tu dau cua 2 chuoi bang nhau

Ở ví dụ trên, do chỉ định n=2 nên chúng ta chỉ so sánh 2 ký tự đầu ở mỗi chuỗi là abab mà thôi. Do đó kết quả bằng nhau đã được trả về.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách so sánh chuỗi trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> lập trình c cơ bản dành cho người mới học lập trình>>12. chuỗi string trong c

Bài sau

Tìm vị trí ký tự trong chuỗi C

Bài tiếp

Nối chuỗi trong C (strcat, strncat, sprintf)