2013-01-18 35 views
5

Các c/C++ strncmp chữ ký là như sau:c/C++ giá trị trả về của strncmp là gì khi kích thước là 0

int strncmp (const char * str1, const char * str2, size_t num); 

Câu hỏi của tôi là giá trị trả về là những gì nếu num là 0? Làm thế nào tiêu chuẩn nói? Không tìm thấy câu trả lời từ một số tài liệu trực tuyến.

Cảm ơn.

+0

logic nó phải là 0, vì không có cách nào cho một các chuỗi sẽ lớn hơn hoặc nhỏ hơn các chuỗi khác. –

+0

Bạn luôn có thể [thử và xem] (http://ideone.com/4e4frw). – ellotheth

Trả lời

6

Vâng, strncmp so sánh nhiều nhất num nhân vật trong hai chuỗi, như vậy với num == 0, nó so sánh không có, do đó thấy không có sự khác biệt, do đó nó sẽ trả về 0.

+0

Nhưng điều đó không có ý nghĩa. trả về 0 có nghĩa là hai chuỗi giống hệt nhau. thực sự không có. Nếu đó là tiêu chuẩn nói, thì tôi nghĩ đó là một lỗi trong tiêu chuẩn. Không có vấn đề gì trả về 0 hoặc 1, nó không phải là một giá trị hợp lý, tôi nghĩ. –

+3

@nowgainsnowpains: Một chuỗi chứa 0 ký tự giống với một chuỗi khác có chứa ký tự bằng 0. –

+3

@nowgainsnowpains Mặc dù trả về 0 từ 'strcmp' có nghĩa là các chuỗi bằng nhau, nhưng nó không giữ cho' strncmp'. Đối với hàm đó, trả về 0 có nghĩa là các phần tử của các ký tự 'n' đầu tiên bằng nhau. Việc chuyển số không cho 'n' có nghĩa là so sánh hai chuỗi rỗng, mà thực sự là bằng nhau. – dasblinkenlight

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