2012-01-17 44 views
5

Tôi gặp khó khăn trong việc xác định thông tin so sánh các chuỗi C. Tôi hiểu rằng không giống như C++, C không hỗ trợ quá tải toán tử, vì vậy tôi tự hỏi liệu có cách nào để kiểm tra xem một chuỗi có lớn hơn/nhỏ hơn chuỗi khác hay không (ví dụ: str1> str2)?Toán tử so sánh cho chuỗi C

Cảm ơn bạn đã trả lời trước. Đây thực sự là một trong những lần đầu tiên tôi thực sự phải đặt một câu hỏi bởi vì tôi không thể tìm thấy một bài viết liên quan.

Trả lời

14

Có một số, mỗi mục đích phục vụ các mục đích khác nhau (bỏ qua các biến thể ký tự rộng hiện nay).

strcmp - so sánh hai chuỗi, ký tự theo ký tự (với khái niệm C của chuỗi nào bằng nhau hoặc không - không cần trùng với cách con người nghĩ - xem strcoll). Có một biến thể để chỉ so sánh số đầu tiên ở nhiều nhất là n ký tự, strncmp.

strcasecmp - so sánh hai chuỗi, bỏ qua trường hợp. Có một biến thể để chỉ so sánh số đầu tiên ở hầu hết các số n ký tự, strncasecmp.

strcoll - so sánh hai chuỗi, quan sát vị trí hiện được đặt (đó là lý do tại sao nó được gọi là đối chiếu, không so sánh trong trường hợp này). Nếu bạn muốn ssß để so sánh tương đương với đối tượng Đức, thì đây là những gì bạn nên sử dụng.


Nơi bạn có thể viết

if (string1 > string2) ... 

bằng một ngôn ngữ, bạn phải viết

if (strmp(string1, string2) > 0) ... 

trong C. Về cơ bản bạn di chuyển cả hai toán hạng vào cuộc gọi chức năng, giữ lại các toán tử so sánh và so sánh với 0 để thay thế.

2

Sử dụng strcmp() trong C.

ví dụ nếu bạn muốn so sánh hai chuỗi s1 và s2 sau đó,

strcmp (s1, s2) sẽ trả về 0 nếu chúng bằng nhau, số nguyên dương nếu s1 lớn hơn s2 và số nguyên âm nếu s1 nhỏ hơn s2.

Các vấn đề liên quan