2010-09-06 3 views

ответ

0

Для не чувствительных к регистру сравнения попробуйте ИНТ strcmp (const char * str1, const char * str2) http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

Если вы хотите строку сравнения, чтобы быть чувствительны к регистру, то есть "test" != "TEsT", использовать int memcmp (const void * ptr1, const void * ptr2, size_t num). http://www.cplusplus.com/reference/clibrary/cstring/memcmp/

Итак:

typedef char string[]; 
string sz1 = "This is a test string." 
string sz2 = "This is a test string." 
string sz3 = "This Is A Test String." 
if(memcmp(sz1, sz2, strlen(sz1) > strlen(sz2) ? strlen(sz1) : strlen(sz2)) == 0) 
    printf("sz1 and sz2 are equal"); 
else 
    printf("sz1 and sz2 are not equal"); 
if(memcmp(sz1, sz3, strlen(sz1) > strlen(sz2) ? strlen(sz1) : strlen(sz2)) == 0) 
    printf("sz1 and sz3 are equal"); 
else 
    printf("sz1 and sz3 are not equal"); 
if(strcmp(sz2, sz3) == 0) 
    printf("sz2 and sz3 are equal"); 
else 
    printf("sz2 and sz3 are not equal"); 

EDIT: Вы также можете использовать stricmp() для чувствительных к регистру сравнения.

+0

strcmp является «точным», если «точным», вы имеете в виду чувствительность к регистру. Вариант без учета регистра называется stricmp. –

+2

'stricmp' не существует в стандартной библиотеке C99. Возможно, вы имеете в виду POSIX. – dirkgently

1

Использование strcmp. Но я бы предложил вам сначала прочесть книгу по программированию на языке C.