Hỏi về strcmp() trong C

Mọi người cho em hỏi hàm strcmp() trong C dùng để so sánh hai chuỗi kí tự, nhiều tài liệu nói là so sánh “độ dài” hai chuỗi, “dài hơn”, “ngắn hơn”;… Vậy thực chất cái “độ dài”, “dài hơn”, “ngắn hơn” là gì và giá trị trả về của hàm cho ta biết chính xác điều gì ạ?

Đều sai cả :smiley: strcmp so sánh theo thứ tự ASCII từ trái sang phải.

4 Likes

Hàm này trả về 3 giá trị. Không phân biệt chuỗi dài chuỗi ngắn. strcmp(s1, s2) trả về:

  • -1 nếu trong s1 tìm thấy ký tự đứng trc s2. (theo thứ tự bảng chữ cái)
  • 0 nếu s1 giống s2.
  • 1 nếu trong s1 tìm thấy ký tự đứng sau s2. (theo thứ tự bảng chữ cái)

Ví dụ: s1 = "abcdef", s2 = "abd":

  • Lần lượt so sánh tứng ký tự, giống nhau so sánh tiếp.
  • Cứ thế cho đến ký tự khác nhau của 2 chuỗi.
  • a = a :point_right: tiếp.
  • b = b :point_right: tiếp.
  • c != d :point_down:
  • c đứng trước d :point_right: trả về -1.
3 Likes

:smiley: em cảm ơn nhiều ạ!

Tài liệu gốc đây:
http://www.cplusplus.com/reference/cstring/strcmp/

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?