Làm cách nào để so sánh hai chuỗi trong C++?

Chương trình C này được sử dụng để so sánh hai chuỗi bằng cách sử dụng hàm strcmp()

Hàm strcmp() so sánh hai chuỗi theo từ điển và được khai báo trong stdio. h

Trường hợp 1. khi các chuỗi bằng nhau, nó trả về 0.
Trường hợp 2. khi các chuỗi không bằng nhau, nó trả về sự khác biệt giữa các giá trị ascii của các ký tự khác nhau.
a) Khi chuỗi1 lớn hơn chuỗi2, nó trả về giá trị dương.
b) Khi chuỗi1 nhỏ hơn chuỗi2, nó trả về giá trị âm.

cú pháp

int strcmp (const char *s1, const char *s2);

Chương trình

#include<stdio.h>
#include<string.h>

int main()
{
    char a[100], b[100];    
    printf("Enter the first string\n");    
    gets(a);    

    printf("Enter the second string\n");    
    gets(b);
    
    if( strcmp(a,b) == 0 )
        printf("Entered strings are equal.\n");
    else
        printf("Entered strings are not equal.\n");
        return 0;
}

Đầu ra chương trình

Làm cách nào để so sánh hai chuỗi trong C++?
báo cáo quảng cáo này

Chuỗi là một dãy các ký tự được kết thúc bằng ký tự đặc biệt ‘\0’. Các chuỗi có thể được so sánh có hoặc không sử dụng chức năng chuỗi

Ví dụ

String1=”Hello”      String2=”Hello”      Both string are equal
String1=”Hello”      String2=”Hell”        String1 is greater
String1=”Hello”      String2=”Helz”       String2 is greater

Giải pháp vấn đề

1. Lấy hai chuỗi làm đầu vào.
2. So sánh hai chuỗi và hiển thị kết quả xem cả hai có bằng nhau hay chuỗi thứ nhất lớn hơn chuỗi thứ hai hoặc chuỗi thứ nhất nhỏ hơn chuỗi thứ hai.
3. Lối ra.

Để so sánh hai chuỗi, chúng ta sẽ xem xét các cách tiếp cận sau

  • Cách tiếp cận ngây thơ (sử dụng vòng lặp)
  • Hàm Strcmp (Hàm có sẵn trong chuỗi. h thư viện)
  • Sử dụng con trỏ

Phương pháp 1. Cách tiếp cận ngây thơ (sử dụng vòng lặp)

Trong cách tiếp cận này, chúng tôi sẽ so sánh hai chuỗi bằng cách sử dụng các vòng lặp

Theo dõi ngay. Bản tin chương trình C. Chủ đề quan trọng Bản tin

quảng cáo

quảng cáo

Thuật toán so sánh hai chuỗi sử dụng vòng lặp.
Bước 1. Bắt đầu chương trình.
Bước 2. Nhập cả hai Chuỗi.
Bước 3. Lặp lại cho đến khi các ký tự của cả hai chuỗi bằng nhau hoặc chuỗi đầu tiên được lặp hoàn toàn.
Bước 4. Bây giờ hãy so sánh cả hai ký tự của chuỗi.

  • Nếu giá trị ascii của ký tự chuỗi đầu tiên lớn hơn ký tự chuỗi thứ hai, hãy in chuỗi đầu tiên lớn hơn chuỗi thứ hai
  • Khác Nếu giá trị ascii của ký tự chuỗi đầu tiên nhỏ hơn ký tự thứ hai, hãy in chuỗi thứ hai lớn hơn chuỗi thứ nhất
  • Nếu giá trị ascii của ký tự chuỗi đầu tiên bằng ký tự thứ hai. in ra, cả hai chuỗi đều bằng nhau

Bước 5. kết thúc chương trình

Chương trình/Mã nguồn

Đây là mã nguồn của chương trình C để so sánh hai chuỗi bằng vòng lặp. Chương trình C được biên dịch thành công và chạy trên hệ thống Linux. Đầu ra chương trình cũng được hiển thị bên dưới

  1. /*
  2.  * C program to Compare Two Strings using loops.
  3.  */
  4. #include <stdio.h>
  5.  
  6. ________số 8
  7. {
  8. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    0
  9. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    1
  10.  
  11. /*
    1
  12. /*
    2
  13.  
  14. /*
    4
  15. /*
    5
  16.  
  17. /*
    7
  18. /*
    8
  19.  
  20.  * C program to Compare Two Strings using loops.
    0
  21.  * C program to Compare Two Strings using loops.
    1
  22.  
  23.  * C program to Compare Two Strings using loops.
    3
  24.  
  25.  * C program to Compare Two Strings using loops.
    5
  26.  * C program to Compare Two Strings using loops.
    6
  27.  * C program to Compare Two Strings using loops.
    7
  28.  * C program to Compare Two Strings using loops.
    8
  29.  
  30.  */
    0
  31.  */
    1
  32.  */
    2
  33.  */
    3
  34.  */
    4
  35.  */
    5
  36.  
  37.  */
    7
  38.  */
    8

Giải thích chương trình

1. Lấy hai chuỗi làm đầu vào và lưu trữ chúng trong các mảng string1[] và string2[] tương ứng.
2. Đếm số lượng ký tự trong cả hai mảng và lưu trữ kết quả trong các biến đếm1 và đếm2.
3. So sánh từng ký tự của chuỗi. Nếu cả hai chuỗi đều bằng nhau thì gán cờ biến thành 0 hoặc nếu chuỗi1 lớn hơn chuỗi2 thì gán 1 cho cờ biến và ngắt hoặc nếu chuỗi1 nhỏ hơn chuỗi 2 thì gán -1 cho cờ biến và ngắt.
4. In đầu ra theo giá trị của cờ biến. (nếu ký tự của chuỗi thứ nhất lớn hơn in ra chuỗi thứ nhất lớn hơn, nếu ký tự đó nhỏ hơn in ra chuỗi thứ hai lớn hơn in ra cả hai chuỗi bằng nhau. )

Trở thành người xếp hạng hàng đầu trong lập trình C ngay bây giờ

Độ phức tạp về thời gian. O(n)
Trong vòng lặp while, chúng ta lặp qua chuỗi đầu tiên cho đến khi các ký tự của cả hai chuỗi giống nhau hoặc lặp hoàn toàn, vì vậy độ phức tạp về thời gian là O(n), trong đó n là độ dài của .

Độ phức tạp của không gian. O(1)
Vì không cần không gian phụ nên độ phức tạp của không gian là O(1).

Các trường hợp kiểm tra thời gian chạy

Trường hợp kiểm tra 1. Chuỗi đầu tiên được nhập ở đây là “hello” và chuỗi thứ hai là “hell”

 */
9

Trường hợp kiểm tra 2. Chuỗi đầu tiên được nhập ở đây là “hello” và chuỗi thứ hai là “helz”

quảng cáo

#include <stdio.h>
0

Phương pháp 2. Hàm Strcmp (Hàm có sẵn trong chuỗi. h thư viện)

Strcmp là một hàm sẵn có được sử dụng để so sánh hai chuỗi ký tự theo ký tự

Nguyên mẫu chức năng. int strcmp(const char *s1,const char *s2)

quảng cáo

Giá trị trả về

  • Không, nếu cả hai chuỗi bằng nhau
  • Nhỏ hơn 0, nếu giá trị ascii của ký tự không khớp đầu tiên của chuỗi 1 nhỏ hơn giá trị của chuỗi 2
  • Lớn hơn 0, nếu giá trị ascii của ký tự không khớp đầu tiên của chuỗi 1 lớn hơn giá trị của chuỗi 2

Thuật toán so sánh hai chuỗi bằng hàm Strcmp

Bước 1. Bắt đầu chương trình
Bước 2. Nhập cả hai Chuỗi
Bước 3. Lưu trữ giá trị của hàm strcmp trong biến kết quả.
Bước 4. Nếu kết quả = 0 thì cả hai chuỗi bằng nhau, nếu kết quả > 0 thì chuỗi thứ nhất lớn hơn chuỗi thứ hai lớn hơn.
Bước 5. Kết thúc chương trình

Chương trình/Mã nguồn

Đây là mã nguồn của chương trình C để so sánh hai chuỗi bằng Hàm Strcmp. Chương trình C được biên dịch thành công và chạy trên hệ thống Linux. Đầu ra chương trình cũng được hiển thị bên dưới

  1. /*
  2. #include <stdio.h>
    2
  3.  */
  4. #include <stdio.h>
  5. #include <stdio.h>
    5
  6. ________số 8
  7. {
  8. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    1
  9.  
  10. /*
    1
  11. /*
    2
  12.  
  13. /*
    4
  14. /*
    5
  15.  
  16.  
    6
  17.  
    7
  18.  */
    1
  19.  
    9
  20.  */
    3
  21.  */
    4
  22.  */
    5
  23.  
  24.  */
    7
  25.  */
    8

Giải thích chương trình

1. Đầu tiên nhập hai chuỗi.
2. Bây giờ hãy lưu trữ giá trị của hàm strcmp trong biến kết quả.
3. Nếu kết quả lớn hơn 0, in ra chuỗi thứ nhất lớn hơn, ngược lại nếu nhỏ hơn 0, in ra chuỗi thứ hai lớn hơn, ngược lại cả hai chuỗi bằng nhau.

Độ phức tạp về thời gian. O(min(n,m))
Độ phức tạp về thời gian của hàm strcmp là O(min(n,m)) trong đó n và m là độ dài của cả hai chuỗi.

Độ phức tạp của không gian. O(1)
Vì không cần không gian phụ nên độ phức tạp của không gian là O(1).

Các trường hợp kiểm tra thời gian chạy

Trường hợp kiểm tra 1. Chuỗi đầu tiên được nhập ở đây là “hello” và chuỗi thứ hai là “hell”

 */
9

Trường hợp kiểm tra 2. Chuỗi đầu tiên được nhập ở đây là “xin chào” và chuỗi thứ hai là “xin chào”

int main ()
7

Phương pháp 3. Sử dụng con trỏ

Trong cách tiếp cận này, chúng ta sẽ so sánh hai chuỗi bằng cách sử dụng con trỏ

Thuật toán so sánh hai chuỗi sử dụng con trỏ

Bước 1. Bắt đầu chương trình
Bước 2. Nhập cả hai Chuỗi
Bước 3. Khai báo hàm so sánh () đưa con trỏ tới ký tự đầu tiên của cả hai chuỗi.
Bước 4. Nếu hàm trả về 0 thì cả hai chuỗi đều bằng nhau, các chuỗi khác không bằng nhau.
Bước 5. Kết thúc chương trình

Chương trình/Mã nguồn

Đây là mã nguồn của chương trình C để chấp nhận hai chuỗi và so sánh chúng bằng con trỏ. Chương trình C được biên dịch thành công và chạy trên hệ thống Linux. Đầu ra chương trình cũng được hiển thị bên dưới

  1. /*
  2. int main ()
    9
  3.  */
  4. {
    1
  5. {
    2
  6. {
    3
  7. {
    4
  8. {
    5
  9. {
    6
  10. {
    7
  11. {
    8
  12. {
    9
  13. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    00
  14. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    01
  15. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    02
  16. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    03
  17. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    04
  18. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    05
  19. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    06
  20. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    07
  21. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    08
  22. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    09
  23. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    10
  24.  
  25. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    12
  26. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    13
  27. {
    3
  28. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    15
  29. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    16
  30. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    17
  31. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    18
  32. #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100], b[100];    
        printf("Enter the first string\n");    
        gets(a);    
    
        printf("Enter the second string\n");    
        gets(b);
        
        if( strcmp(a,b) == 0 )
            printf("Entered strings are equal.\n");
        else
            printf("Entered strings are not equal.\n");
            return 0;
    }
    19
  33. /*
    00
  34. /*
    01
  35. /*
    02
  36. /*
    03
  37. /*
    04
  38. /*
    05
  39.  */
    8

Giải thích chương trình

Đầu tiên nhập hai chuỗi. Bây giờ hãy khai báo một hàm so sánh lấy một con trỏ tới ký tự đầu tiên của cả hai chuỗi. Lặp lại cho đến khi bất kỳ chuỗi nào được lặp hoàn toàn hoặc nếu có bất kỳ ký tự nào khác thì dừng lặp lại. Sau đó so sánh hai con trỏ, nếu con trỏ lớn hơn in ra chuỗi thứ nhất lớn hơn, nếu con trỏ thứ hai lớn hơn in ra chuỗi thứ hai lớn hơn, ngược lại cả hai chuỗi bằng nhau

Độ phức tạp về thời gian. O(min(n,m))
Vì vòng lặp được thực hiện cho đến khi bất kỳ chuỗi nào được duyệt hết, nên độ phức tạp về thời gian là o(min(n,m)), trong đó, n và .

Độ phức tạp của không gian. O(1)
Vì không cần không gian phụ nên độ phức tạp của không gian là O(1).

Các trường hợp kiểm tra thời gian chạy

Trường hợp kiểm tra 1. Chuỗi đầu tiên được nhập ở đây là “hello” và chuỗi thứ hai là “hell”

/*
07

Trường hợp kiểm tra 2. Chuỗi đầu tiên được nhập ở đây là “xin chào” và chuỗi thứ hai là “xin chào”

/*
08

Để thực hành các chương trình về mọi chủ đề trong C, vui lòng truy cập “Ví dụ lập trình trong C”, “Cấu trúc dữ liệu trong C” và “Thuật toán trong C”

Tôi có thể sử dụng == để so sánh các chuỗi trong C không?

Bởi vì chuỗi C không tồn tại như vậy. Chúng là các mảng char kết thúc bằng \0. Toán tử đẳng thức == sẽ kiểm tra xem con trỏ tới phần tử đầu tiên của mảng có giống nhau không. Nó sẽ không so sánh từ điển

Làm thế nào để so sánh 2 chuỗi?

5 cách so sánh hai chuỗi trong Java .
Phương thức chuỗi bằng
Chuỗi bằng Bỏ qua trường hợp
Đối tượng bằng Phương pháp
Chuỗi so sánh với phương thức
Sử dụng Double Equal To Toán tử

Tôi có thể sử dụng == để so sánh hai chuỗi không?

Bạn không nên sử dụng == (toán tử đẳng thức) để so sánh các chuỗi này vì chúng so sánh tham chiếu của chuỗi, i. e. liệu chúng có phải là cùng một đối tượng hay không. Mặt khác, phương thức equals() so sánh xem giá trị của các chuỗi có bằng nhau hay không và không phải chính đối tượng.

Hàm nào dùng để so sánh 2 chuỗi C?

strcmp() trong C/C++ . cú pháp. int strcmp(const char *leftStr, const char *rightStr ); .