2013-01-18 26 views
5

c/C++ strncmp imza olduğunda strncmp dönüş değeri aşağıdaki gibi ne:c/C++ boyutu 0

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

Sorum num 0 ise dönüş değeri olan şeydir? Standart nasıl diyor? Bazı çevrimiçi dokümanlardan cevap bulamayın.

Teşekkürler. Bu nedenle, hiçbiri karşılaştırır hiçbir fark bulur num == 0 ile çok

+0

0 olmalıdır döner, iki dizeleri en num karakter karşılaştırır Dizelerin diğerlerinden büyük veya küçük olması. –

+0

Her zaman [deneyebilirsiniz] (http://ideone.com/4e4frw). – ellotheth

cevap

6

Eh, strncmp biri için bir yolu yoktur çünkü böylece, Mantıken 0.

+0

Ama bu hiç mantıklı değil. 0 döndürür, iki dizenin aynı olduğu anlamına gelir. aslında yoktur. Bu standart diyorsa, o zaman standart bir hata olduğunu düşünüyorum. 0 veya 1 ne döner, önemli değil, bence. –

+3

@nowgainsnowpains: Sıfır karakter içeren bir dize sıfır karakterleri içeren başka bir dizeyle aynıdır. –

+3

@nowgainsnowpains "strcmp" öğesinden 0 döndürmek, dizelerin eşit olduğu anlamına gelir, ancak bu "strncmp" için geçerli değildir. Bu işlev için 0 döndürmek, ilk 'n' karakterlerinin alt dizelerinin eşit olduğu anlamına gelir. 'N' için sıfırdan geçmek, gerçekten birbirine eşit olan iki boş dizeyi karşılaştırmak anlamına gelir. – dasblinkenlight