strncmp() — ストリングの比較

フォーマット

#include <string.h>
int strncmp(const char *string1, const char *string2, size_t count);

言語レベル

ANSI

スレッド・セーフ

はい

説明

strncmp() 関数は、string1 および string2count の最大数まで比較します。

戻り値

strncmp() 関数は、2 つのストリング間の関係を示す次のような値を戻します。
意味
0 より小さい値 string1string2 より小さい
0 string1string2 と等しい
0 より大きい値 string1string2 より大きい

この例では、strcmp() 関数と strncmp() 関数の違いを説明します。
#include <stdio.h>
#include <string.h>
 
#define SIZE 10
 
int main(void)
{
  int  result;
  int  index = 3;
  char buffer1[SIZE] = "abcdefg";
  char buffer2[SIZE] = "abcfg";
  void print_result( int, char *, char * );
 
  result = strcmp( buffer1, buffer2 );
  printf( "Comparison of each character¥n" );
  printf( "  strcmp: " );
  print_result( result, buffer1, buffer2 );
 
  result = strncmp( buffer1, buffer2, index);
  printf( "¥nComparison of only the first %i characters¥n", index );
  printf( "  strncmp: " );
  print_result( result, buffer1, buffer2 );
}
 
void print_result( int res, char * p_buffer1, char * p_buffer2 )
{
  if ( res == 0 )
    printf( "¥"%s¥" is identical to ¥"%s¥"¥n", p_buffer1, p_buffer2);
  else if ( res < 0 )
    printf( "¥"%s¥" is less than ¥"%s¥"¥n", p_buffer1, p_buffer2 );
  else
    printf( "¥"%s¥" is greater than ¥"%s¥"¥n", p_buffer1, p_buffer2 );
}
 
/*****************  Output should be similar to:  *****************
 
Comparison of each character
  strcmp: "abcdefg" is less than "abcfg"
 
Comparison of only the first 3 characters
  strncmp: "abcdefg" is identical to "abcfg"
*/