wcsncmp() - ワイド文字ストリングの比較

標準

標準/拡張機能 C/C++ 依存項目

ISO C 改訂
XPG4
XPG4.2
C99
Single UNIX Specification、バージョン 3

両方  

形式

#include <wchar.h>

int wcsncmp(const wchar_t *string1, const wchar_t *string2, size_t count);

機能説明

string1 から string2 間の最大の count ワイド文字までを比較します。wcsncmp() 関数は、NULL 文字で終了するワイド文字ストリングを操作します。この関数に対するストリング引数には、ストリングの終わりにマークを 付ける NULL ワイド文字が入っていなければなりません。

このワイド文字関数の動作は、現行ロケールの LC_CTYPE カテゴリーの影響を受けます。 カテゴリーを変更すると、未定義の結果が発生する可能性があります。

戻り値

wcsncmp() は、ストリング間の関係を示す次のような値を戻します。
意味
< 0
string2 が指すストリングより小さい string1 が 指すストリング
= 0
string2 が指すストリングと同一の string1 が 指すストリング
> 0
string1 で示されるストリングが、string2 で 示されるストリングより大きい。

CELEBW14
⁄* CELEBW14                                      

   This example demonstrates the difference between &wcscmp.                    
   and &wcsncmp..                                                               
                                                                                
 *⁄                                                                             
#include <stdio.h>                                                              
#include <wchar.h>                                                              
                                                                                
#define SIZE 10                                                                 
                                                                                
int main(void)                                                                  
{                                                                               
  int  result;                                                                  
  int  index = 3;                                                               
  wchar_t buffer1[SIZE] = L"abcdefg";                                           
  wchar_t buffer2[SIZE] = L"abcfg";                                             
  void print_result( int, wchar_t *, wchar_t * );                               
                                                                                
  result = wcscmp( buffer1, buffer2 );                                          
  printf( "Comparison of each character¥n" );
  printf( "  wcscmp: " );                                                       
  print_result( result, buffer1, buffer2 );                                     
                                                                                
  result = wcsncmp( buffer1, buffer2, index);                                   
  printf( "¥nComparison of only the first %i characters¥n", index );
  printf( "  wcsncmp: " );                                                      
  print_result( result, buffer1, buffer2 );                                     
}                                                                               
                                                                                
void print_result( int res, wchar_t * p_buffer1, wchar_t * p_buffer2 )          
{                                                                               
  if ( res == 0 )                                                               
    printf( "¥"%ls¥" is identical to ¥"%ls¥"¥n", p_buffer1, p_buffer2);
  else if ( res < 0 )                                                           
    printf( "¥"%ls¥" is less than ¥"%ls¥"¥n", p_buffer1, p_buffer2 );
  else                                                                          
    printf( "¥"%ls¥" is greater than ¥"%ls¥"¥n", p_buffer1, p_buffer2 );
}                                                                               
出力:
Comparison of each character
  wcscmp: "abcdefg" is less than "abcfg"

Comparison of only the first 3 characters
  wcsncmp: "abcdefg" is identical to "abcfg"

関連情報