C言語 標準関数 | 応用 | サンプル

標準関数
構文
応用

管理人

プライバシーポリシー


書式

#include <string.h>

int memcmp( const void *str1 , const void *str2
                                     , size_t len );

■戻り値:
str1とstr2をlen文字分比較して等しい場合は0、
同様にstr1がstr2より大きい場合(str1>str2)は正の整数、
同様にstr1がstr2より小さい場合(str1<str2)は負の整数を返す。

説明

str1とstr2の先頭アドレスから1Byteずつlen文字分を比較し、
str1とstr2が等しい場合は0、
str1がstr2より大きい場合は正の整数、
str1がstr2より大きい場合は負の整数を返す。

比較で等しく途中にNULL(\0)が出現しても等しい限りlen文字数まで比較する。

サンプル

#include <string.h>

main() {
  char str1[] = "abc\0defgh\0ijk";
  char str2[] = "abc\0defgh\0ijz";
  int ret;

  ret = memcmp(( void * )str1 , ( void * )str2 , 12 );
  printf( "ret=%d\n" , ret ); /* 0 */

  ret = memcmp(( void * )str2 , ( void * )str1
                                 , sizeof( str1 ));
  printf( "ret=%d\n" , ret ); /* 1 */

  ret = memcmp(( void * )str1 , ( void * )str2
                                 , sizeof( str1 ));
  printf( "ret=%d\n\n" , ret ); /* -1 */

  char str3[] = "1234";
  char str4[] = "12345";

  ret = memcmp(( void * )str3 , ( void * )str4
                                 , strlen( str3 ));
  printf( "ret=%d\n" , ret ); /* 0 */

  ret = memcmp(( void * )str4 , ( void * )str3
                                 , strlen( str4 ));
  printf( "ret=%d\n" , ret ); /* 1 */

  ret = memcmp(( void * )str3 , ( void * )str4
                                 , strlen( str4 ));
  printf( "ret=%d\n" , ret ); /* -1 */
}

実行結果

ret=0
ret=1
ret=-1

ret=0
ret=1
ret=-1


Copyright © 2008-2015 http://hitorilife.com All Rights Reserved.