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

【C言語】strncmpライブラリ関数を使って2つの文字列を比較するプログラムの作り方


strncmpは、C言語のヘッダーファイル「string.h」に定義されている標準ライブラリ関数の一つです。この関数を使用すると、2つの文字列を比較し、どちらの文字列が大きい(辞書順で後ろにある)のかを判定することができます。

strcmp関数(文字列比較)

strcmp関数は、2つの文字列を比較するための関数です。戻り値として、両方の文字列の中で最初に一致しなかった文字同士のASCIIコードの差を返します。

構文

int strcmp(string1, string2);
  • 差が0の場合:string1 = string2(2つの文字列は等しい)

  • 差が正の値の場合:string1 > string2(string1の方が大きい)

  • 差が負の値の場合:string1 < string2(string1の方が小さい)

使用例

【C言語】strncmpライブラリ関数を使って2つの文字列を比較するプログラムの作り方

strncmp関数とは

strncmp関数は、2つの文字列の先頭からn文字分だけを比較するための関数です。文字列全体を比較するのではなく、必要な文字数だけを比較したい場合に便利です。

構文

strncmp(string1, string2, n);

第3引数には比較する文字数を指定します。たとえば「strncmp(string1, string2, 4)」と記述すると、各文字列の先頭4文字のみが比較されます。

サンプルプログラム

#include<stdio.h>
#include<string.h>
void main(){
    //2つの文字列を宣言//
    char string1[25], string2[25];
    int value;
    //文字列1と文字列2を入力//
    printf("Enter String 1: ");
    gets(string1);
    printf("Enter String 2: ");
    gets(string2);
    //ライブラリ関数を使って比較//
    value = strncmp(string1, string2, 4);
    //条件分岐で結果を表示//
    if(value == 0){
        printf("%s is same as %s", string1, string2);
    } else if(value > 0) {
        printf("%s is greater than %s", string1, string2);
    } else {
        printf("%s is less than %s", string1, string2);
    }
}

実行結果

Enter String 1: Tutorials
Enter String 2: Point
Tutorials is greater than Point

この例では、先頭4文字(「Tuto」と「Poin」)を比較しています。最初の文字「T」のASCIIコード(84)は「P」のASCIIコード(80)より大きいため、正の値が返され、「Tutorials is greater than Point」と表示されます。

注意:上記プログラムで使用しているgets関数は、バッファオーバーフローを引き起こす危険性があるため、現在では非推奨とされています。実際の開発では、入力文字数を制限できるfgets関数などの安全な代替手段を使用することをおすすめします。

  1. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁

  2. Pythonでライブラリ関数を使わずに文字列の長さを計算するプログラム

    Pythonでは、len()のような組み込み関数やライブラリメソッドに頼らなくても、文字列の長さを計算できます。基本的な考え方はシンプルで、「カウンタ変数」を用意し、文字列内の各要素(文字)に出会うたびにカウントを1ずつ増やしていくというものです。 以下に具体的な実装例を示します。 サンプルコード my_string = Hi Will print(The string is :) print(my_string) my_counter = 0 for i in my_string: my_counter = my_counter + 1 print(The length of t