Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm strcmp() trong C/C++

Hàm strcmp() là hàm thư viện chuẩn so sánh hai chuỗi ký tự theo thứ tự từ điển (lexicographically), so sánh từng cặp ký tự cho đến khi khác nhau hoặc gặp ký tự null. Khai báo trong <string.h>.

Cú pháp

int strcmp(const char *leftStr, const char *rightStr);

Giá trị trả về

  1. 0: Hai chuỗi giống hệt nhau.
  2. > 0: Ký tự khác nhau đầu tiên của chuỗi trái có mã ASCII lớn hơn chuỗi phải.
  3. < 0: Ký tự khác nhau đầu tiên của chuỗi trái có mã ASCII nhỏ hơn chuỗi phải.

Ví dụ 1: Chuỗi bằng nhau

#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "Tom!";
    char str2[] = "Tom!";
    int result = strcmp(str1, str2);
    if (result == 0) printf("Chuoi bang nhau");
    else printf("Chuoi khac nhau");
    printf("\nGia tri tra ve: %d", result);
    return 0;
}
Chuoi bang nhau
Gia tri tra ve: 0

Ví dụ 2: Trả về > 0 ('h' > 'H')

char str1[] = "hello World!";
char str2[] = "Hello World!";
// 'h'(104) > 'H'(72) => diff = 32
Chuoi khac nhau
Gia tri tra ve: 32

Ví dụ 3: Trả về < 0 ('H' < 'h')

char leftStr[] = "Hello World!";
char rightStr[] = "hello World!";
// 'H'(72) < 'h'(104) => diff = -32
Chuoi khac nhau
Gia tri tra ve: -32

Lưu ý: So sánh phân biệt chữ hoa/thường (case-sensitive). Để so sánh không phân biệt, dùng strcasecmp() (POSIX) hoặc tự viết hàm chuyển cùng chữ hoa/thường trước khi so sánh.