So sánh 2 chuỗi giống nhau c năm 2024

Thứ tự từ điển là một kiến thức quan trọng khi học về xâu ký tự, bài viết này mình sẽ hướng dẫn các bạn cách xác định thứ tự từ điển giữa các xâu ký tự cũng như các hàm và toán tử trong string đã cung cấp sẵn

NỘI DUNG :

  • Thứ Tự Từ Điển (Lexicographically) Là Gì ?
  • Toán Tử So Sánh String Và Hàm Compare()
  • Video Tutorial

1. Thứ Tự Từ Điển (Lexicographically) Là Gì ?

Thứ tự từ điển của xâu ký tự hiểu đơn giản là thứ tự abc trong bảng chữ cái, trong đó ký tự nào đứng trước trong bảng chữ cái sẽ có thứ tự từ điển nhỏ hơn.

Đối với chuỗi ký tự thì thứ tự từ điển của nó so với chuỗi ký tự khác được xác định bằng ký tự khác nhau đầu tiên của 2 xâu.

Yêu cầu bài tập C này là so sánh xem hai chuỗi có đồng nhất (giống nhau) hay không. Để giải bài tập C này bạn cần sử dụng vòng lặp để duyệt qua tất cả các ký tự của hai chuỗi và kiểm tra từng ký tự tương ứng với chỉ mục có giống nhau không.


Lời giải

Dưới đây là chương trình C để giải bài tập so sánh 2 chuỗi trong C:

include

int main() { char s1[50]; char s2[50]; int n = 0; short flag = 1;

printf("Nhap chuoi s1: ");  
gets(s1);  
printf("Nhap chuoi s2: ");  
gets(s2);  
// so sanh chuoi s1 voi s2 while (s1[n] != '\0') {
  if(s1[n] != s2[n]) {  
     flag = 0;  
     break;  
  }  
  n++;  
} if(flag == 1) {
  printf("Chuoi %s va chuoi %s la giong nhau.", s1, s2);  
}else {
  printf("Chuoi %s va chuoi %s la khac nhau.", s1, s2);  
} return 0; } Chạy chương trình C trên cho kết quả như sau:

So sánh 2 chuỗi giống nhau c năm 2024



So sánh 2 chuỗi giống nhau c năm 2024

Khi so sánh 2 số trong C thì ta có một số phép toán làm rất đơn giản <, >, >=, <=, ==, !=, tuy nhiên để so sánh chuỗi thì chúng ta không thể dùng các phép toán đó mà cần phải dùng hàm strcmp nằm trong thư viện string.h.

Hàm strcmp so sánh chuỗi s1 và chuỗi s2 và cho ta kết quả:

  • 1 Nếu s1 lớn hơn s2
  • 0 Nếu s1 giống s2
  • -1 Nếu s1 nhỏ hơn s2

Lưu ý: Trong Linux, hàm này trả về giá trị âm, dương, 0 (là khoảng cách giữa 2 ký tự khác nhau tương ứng trong s1, s2).

Ví dụ chương trình sau:

include

include

int main() {

char s1[20];
char s2[20];                
do 
{
    printf("Enter s1: ");
    gets(s1);
    printf("Enter s2: ");
    gets(s2);
    int x = strcmp(s1, s2);
    printf("x = %d", x);
    if(x < 0) printf(" => %s < %s", s1, s2);
    if(x > 0) printf(" => %s > %s", s1, s2);
    if(x == 0)printf(" => %s = %s", s1, s2);
    printf("\n\n");
} while ( strcmp(s1, s2) != 0);
return 0;
}

Kết quả:

Enter s1: Hang

Enter s2: Ho x = -1 => Hang < Ho

Enter s1: Hong Enter s2: Hon x = 1 => Hong > Hon

Enter s1: Hung Enter s2: hung x = -1 => Hung < hung

Enter s1: Quan Enter s2: Quan x = 0 => Quan = Quan

2. Nguyên tắc so sánh

Nguyên tắc so sánh 2 chuỗi đó là duyệt lần lượt 2 từng ký tự của 2 chuỗi. So sánh mã ACSII của 2 ký tự đó, mã ký tự nào lớn hơn tức là chuỗi lớn hơn và ngừng so sánh. Nếu một chuỗi nào hết ký tự để so sanh trước thì chuỗi đó bé hơn.

Hàm strcmp() trong C được sử dụng để so sánh 2 chuỗi. Nếu hàm strcmp(str1, str2) trả về 0 thì 2 chuỗi bằng nhau, lớn hơn 0 thì chuỗi str1 lớn hơn chuỗi str2 và ngược lại nếu nhỏ hơn 0 thì chuỗi str1 nhỏ hơn str2.

include

include

int main() { char str1[20], str2[20]; printf("Nhap chuoi 1: "); gets(str1); printf("Nhap chuoi 2: "); gets(str2); if (strcmp(str1, str2) == 0) { printf("2 chuoi bang nhau."); } else if (strcmp(str1, str2) > 0) { printf("Chuoi 1 lon hon chuoi 2"); } else { printf("Chuoi 1 nho hon chuoi 2"); } return 0; } Kết quả:

Nhap chuoi 1: HelloC Nhap chuoi 2: HelloC++ Chuoi 1 nho hon chuoi 2



So sánh 2 chuỗi giống nhau c năm 2024