C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C / C ++でのstrncmp()とstrcmp()の違い


strncmp()

関数strncmp()は、左の文字列と右の文字列を数値まで比較するために使用されます。 strcmp()と同じように機能します。左の文字列の一致する文字が右の文字列の文字よりも大きいASCII値を持っている場合、ゼロより大きい値を返します。左の文字列の一致する文字のASCII値が右の文字列の文字よりも小さい場合、ゼロ未満の値を返します。

C言語でのstrncmp()の構文は次のとおりです。

int strncmp ( const char *leftString, const char *rightString, size_t number );

ここで

  • leftString −右の文字列と比較される最初の文字列。

  • rightString −最初の文字列を比較するために使用される2番目の文字列。

  • 番号 −比較する最大文字数。

これがC言語のstrncmp()の例です

#include<stdio.h>
#include<string.h>

int main() {
   char str1[] = "blank";
   char str2[] = "Hello World!";
   int result = strncmp(str1, str2, 1);

   if (result==0)
   printf("Strings are equal");
   else
   printf("Strings are unequal");

   printf("\nValue returned by strcmp() is: %d" , result);
   return 0;
}

出力

これが出力です

Strings are unequal
Value returned by strcmp() is: 26

strcmp()

関数strcmp()は組み込みのライブラリ関数であり、「string.h」ヘッダーファイルで宣言されています。この関数は、文字列引数を比較するために使用されます。文字列を辞書式に比較します。つまり、両方の文字列を文字ごとに比較します。両方の文字列の文字が等しくなるか、NULL文字が見つかるまで、文字列の最初の文字の比較を開始します。

両方の文字列の最初の文字が等しい場合は、2番目の文字をチェックします。このプロセスは、NULL文字が見つかるか、両方の文字が等しくなくなるまで続行されます。両方の文字列が同一である場合、つまり文字が両方の文字列で同じである場合は、ゼロを返します。

左の文字列の一致する文字が右の文字列の文字よりも大きいASCII値を持っている場合、ゼロより大きい値を返します。左の文字列の一致する文字のASCII値が右の文字列の文字よりも小さい場合、ゼロ未満の値を返します。

C言語でのstrcmp()の構文は次のとおりです。

int strcmp(const char *leftString, const char *rightString );

ここで

  • leftString −右の文字列と比較される最初の文字列。

  • rightString −最初の文字列を比較するために使用される2番目の文字列。

これがC言語のstrcmp()の例です

#include<stdio.h>
#include<string.h>
int main() {
   char str1[] = "hello World!";
   char str2[] = "Hello World!";
   int result = strcmp(str1, str2);

   if (result==0)
   printf("Strings are equal");
   else
   printf("Strings are unequal");

   printf("\nValue returned by strcmp() is: %d" , result);
   return 0;
}

出力

出力は次のとおりです:

Strings are unequal
Value returned by strcmp() is: 32

  1. C++文字列定数と文字定数の違い

    C ++では、一重引用符で囲まれた文字は文字リテラルです。文字型です。たとえば、「a」は、ASCIIベースのシステムでは値97のchar型です。 二重引用符で囲まれた1文字または文字列は、文字列リテラルを表します。これはconstchar[]型であり、文字列の長さ+1のサイズの配列を参照します。その余分な文字は文字列の終わりを示すためにあります。 文字列リテラルは、「abcdefg」のように任意の長さにすることができます。文字リテラルには、ほとんどの場合、1文字だけが含まれます。これらが印刷されるとき、文字列リテラルは、文字列で最初の\0またはNULL文字が検出されるまで印刷されます。

  2. C++での関係演算子(==)とstd ::string ::compare()の違い

    関係演算子==とstd::string ::compare()の違いは1つだけです。それが戻り値です。内部的には、string ::operator ==()はstring ::compare()を使用しています 関係演算子(==)は、2つの文字列が等しいかどうかを示すブール値を返し、compareは、文字列の相互関係を示す整数を返します。 ユースケースを詳しく説明するために、compare()は、2つの文字列がたまたま異なっている場合に、2つの文字列が互いにどのように関連するか(小さいか大きいか)に関心がある場合に役立ちます。たとえば、 例 #include <iostream>