//********************************************************* // string1 と string2 を比較し、文字列の順序関係が // string1 == string2 であれば0を // string1 > string2 であれば正を // string1 < string2 であれば負を // それぞれ返します。 // 関数 strcmpi() の返す順序関係と関数 strcmp() の返す順序関係とは一致しません。 // この関数は大文字と小文字を区別しません。 //********************************************************* int strcmpi ( const char *string1, const char *string2 ) { // 最初の不一致文字を見つける。 const char *p, *q; {for( p = string1, q = string2; tolower((unsigned char)*p) == tolower((unsigned char)*q); ++p, ++q ) { // 両文字列が終端に達した。 if ( '\0' == *p ) { return 0; } }} // 不一致文字間の大小関係を返す。 return (unsigned char *)tolower((unsigned char)*p) > (unsigned char *)tolower((unsigned char)*q) ? 1 : -1; }//strcmpi //********************************************************* // string1 と string2 を最大で num 文字まで比較し、文字列の順序関係が // string1 == string2 であれば0を // string1 > string2 であれば正を // string1 < string2 であれば負を // それぞれ返します。 // 関数 strncmpi() の返す順序関係と関数 strncmp() の返す順序関係とは一致しません。 // この関数は大文字と小文字を区別しません。 //********************************************************* int strncmpi ( const char *string1, const char *string2, size_t num ) { // 0 文字比較で不一致文字は見つからない。 if ( 0 == num ) { return 0; } // 最初の不一致文字を見つける。 const char *p, *q; {for( p = string1, q = string2; tolower((unsigned char)*p) == tolower((unsigned char)*q); ++p, ++q ) { // 文字列が終端に達したか、指定文字数の比較が終了した。 if ( ('\0' == *p) || (num-1 <= (size_t)(p - string1)) ) { return 0; } }} // 不一致文字間の大小関係を返す。 return (unsigned char *)tolower((unsigned char)*p) > (unsigned char *)tolower((unsigned char)*q) ? 1 : -1; }//strncmpi 関連 |
|
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
同人ダウンロード販売|DL.Getchu.com