検索

C言語で文字列を比較する方法

May 08, 2021 pm 03:05 PM
C言語文字列比較

比較方法: 1. bcmp()、文字列の最初の n バイトが等しいかどうかを比較します; 2. strcmp()、文字列の大文字と小文字を区別して比較します; 3. strcmp()、サイズではありません-sensitive 書かれた比較文字列; 4. strncmp() または strnicmp()、文字列の最初の n 文字の大文字と小文字を区別した比較。

C言語で文字列を比較する方法

このチュートリアルの動作環境: Windows7 システム、C99 バージョン、Dell G3 コンピューター。

bcmp() を使用します -- メモリ (文字列) の最初の n バイトを比較して、それらが等しいかどうかを確認します

プロトタイプは次のとおりです:

int bcmp(const void *s1, const void * s2, int n);

[パラメータ] s1、s2 は比較する必要がある 2 つのメモリ (または 2 つの文字列) で、n は比較する長さです。

[戻り値] s1 と s2 の最初の n バイトが等しいか、n が 0 に等しい場合は 0 を返し、それ以外の場合は 0 以外の値を返します。

bcmp() 関数は NULL をチェックしません。

実際、bcmp() と memcmp() には同じ関数があり、メモリ ブロックの最初の n バイトが等しいかどうかを比較するために使用されますが、2 つのパラメータ s1 と s2 はポインタであり、奇妙なことにstring.h ファイルを使用して、文字列を比較することもできます。

例:

#include <stdio.h>
#include <string.h>
int main ()
{
    char *s1 = "Golden Global View";
    char *s2 = "Golden Global View";
    if( !bcmp(s1, s2, 7) )
        printf("s1 equal to s2 in first 7 bytes");
    else
        printf("s1 not equal to s2 in first 7 bytes");
    return 0;
}

strcmp() を使用します -- 文字列を比較します (大文字と小文字を区別します)

プロトタイプは次のとおりです:

int strcmp(const char *s1, const char *s2);

[パラメータ] s1、s2 は、比較する必要がある 2 つの文字列です。

文字列サイズの比較は、ASCII コード テーブル内の順序によって決まり、この順序は文字の値でもあります。 strcmp() は、まず s2 の最初の文字値から s1 の最初の文字値を減算します。その差が 0 の場合は、次の文字の比較を続けます。差が 0 でない場合は、その差を返します。たとえば、文字列「Ac」と「ba」を比較すると、文字「A」(65)と「b」(98)の差(-33)が返されます。

[戻り値] パラメータ s1 と s2 の文字列が同じ場合は 0 を返します。 s1 が s2 より大きい場合、0 より大きい値が返されます。 s1 が s2 より小さい場合、0 より小さい値が返されます。

注: strcmp() はバイナリで比較を実行し、マルチバイト文字またはワイドバイト文字を考慮しません。

例:

#include <string.h>
main(){
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    char *c = "aacdef";
    char *d = "aBcDeF";
    printf("strcmp(a, b) : %d\n", strcmp(a, b));
    printf("strcmp(a, c) : %d\n", strcmp(a, c));
    printf("strcmp(a, d) : %d\n", strcmp(a, d));
}

出力:

strcmp(a, b) : 32
strcmp(a, c) :-31
strcmp(a, d) : 0

strictmp() を使用します -- 文字列を比較します (大文字と小文字は区別されません)

#プロトタイプは:

int strcmp(char *s1, char *s2);

[パラメータの説明] s1、s2 は比較する必要がある 2 つの文字列です。

文字列サイズの比較は、ASCII コード テーブル内の順序によって決まり、この順序は文字の値でもあります。 strictmp() は、まず s2 の最初の文字値から s1 の最初の文字値を減算します。その差が 0 の場合は、次の文字の比較を続けます。差が 0 でない場合は、その差が返されます。たとえば、文字列「Ac」と「ba」を比較すると、文字「A」(65)と「b」(98)の差(-33)が返されます。

[戻り値] パラメータ s1 と s2 の文字列が同じ場合は 0 を返します。 s1 が s2 より大きい場合、0 より大きい値が返されます。 s1 が s2 より小さい場合、0 より小さい値が返されます。

注: strictmp() は Windows に固有のものであり、Linux で同じ機能を持つ関数は strcasecmp() であり、ヘッダー ファイル strings.h に含まれています。

大文字と小文字を区別せずに文字列を比較する別の関数は strcmpi() です。strcmpi() は strictmp() のマクロ定義ですが、この関数は実際には提供されていません。

例: 2 つの文字列のサイズを比較します。

#include<stdio.h>
#include<string.h>
int main(void)
{
    /*定义两个字符串*/
    char* s1 = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
    char* s2 = "http://see.xidian.edu.cn/cpp/shujujiegou/";
    /*比较字符串(不分大小写)*/
    int result = stricmp(s1,s2);  // 也可以改成strcmpi()
    if(result>0)
    {
        printf("Result: s1 > s2");
    }
    else if(result<0)
    {
        printf("Result: s1 < s2");
    }
    else if(result == 0)
    {
        printf("Result: s1 = s2");
    }   
    getchar();/*等待用户输入个字符,然后退出*/
    return 0;
}

出力:


Result: s1 > s2

strncmp() を使用します -- 文字列の最初の n 文字を比較します (大文字と小文字は区別されます)

プロトタイプは:

int strncmp ( const char * str1, const char * str2, size_t n );

[パラメータ] str1、str2 は比較する必要がある 2 つの文字列で、n は比較する文字数です。

文字列サイズの比較は、ASCII コード テーブル内の順序によって決まり、この順序は文字の値でもあります。 strncmp() は、まず s1 の最初の文字値から s2 の最初の文字値を減算します。その差が 0 の場合は、文字終了マーク '\0' まで次の文字の比較を続けます。差が 0 でない場合は、 、差額を返します。たとえば、文字列「Ac」と「ba」を比較すると、文字「A」(65)と「b」(98)の差(-33)が返されます。

注: 比較される文字には文字列の終了マーク '\0' が含まれており、'\0' に遭遇すると比較は終了します。n が何であっても、後続の文字は継続されません。比較される。

[戻り値] str1 と str2 の最初の n 文字が同じ場合は 0 を返し、s1 が s2 より大きい場合は 0 より大きい値を返し、s1 が s2 より小さい場合は値を返します。 0未満。

注: 2 つの文字が異なる場合、GCC はその文字に対応する ASCII コードの差を返し、VC は -1 または 1 を返します。しかし、恥ずかしいのは、strnicmp()、strcmp()、および strictmp() がすべて、ASCII の違いではなく、GCC と VC では -1 または 1 を返すことです。

例: 2 つの文字列セットを比較します。

#include<stdio.h>
#include<string.h>
int main(void){
    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";
    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";
    char* s3 = "abc";
    char* s4 = "abcxyz";
    char* s5 = "123456";
    char* s6 = "123";
    printf("s1-s2=%d\n", strncmp(s1, s2, 20));  // 是否区分大小写
    printf("s3-s4=%d\n", strncmp(s3, s4, 100));  // s3的长度小于s4
    printf("s5-s6=%d\n", strncmp(s5, s6, 100));  // s5的长度大于s6
    return 0;
}

VC6.0 での実行結果:

s1-s2=1
s3-s4=-1
s5-s6=1

GCC での実行結果:

s1-s2=32
s3-s4=-120
s5-s6=52

strnicmp() を使用 -- 文字列の最初の n 文字を比較します(大文字と小文字が区別されます)

プロトタイプは次のとおりです:

int strnicmp ( const char * str1, const char * str2, size_t n );

[パラメータ] str1、str2 は比較する必要がある 2 つの文字列で、n は比較する文字数です。比較した。

[戻り値] str1 と str2 の最初の n 文字が同じ場合は 0 を返し、s1 が s2 より大きい場合は 0 より大きい値を返し、s1 が s2 より小さい場合は値を返します。 0未満。

strncmp() との違いは、2 つの文字が異なる場合、GCC と VC の両方が、対応する ASCII の差を返すのではなく、-1 または 1 を返すことです。

strnicmp() に関するその他の手順については、「strncmp()」を参照してください。これは単なる例であり、繰り返しません。

另外一个不区分大小写比较字符串前n个字符的函数是strncmpi(),strncmpi()是strnicmp()的宏定义,实际未提供此函数。

示例:对6组字符串进行比较。

#include<stdio.h>
#include<string.h>
int main(void){
    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";
    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";
    char* s3 = "abc";
    char* s4 = "abcxyz";
    char* s5 = "123456";
    char* s6 = "123";
    printf("s1-s2=%d\n", strnicmp(s1, s2, 20));  // 是否区分大小写
    printf("s3-s4=%d\n", strnicmp(s3, s4, 100));  // s3的长度小于s4
    printf("s5-s6=%d\n", strnicmp(s5, s6, 100));  // s5的长度大于s6
    return 0;
}

VC6.0下运行结果:

s1-s2=0
s3-s4=-1
s5-s6=1

GCC下运行结果:

s1-s2=0
s3-s4=-1
s5-s6=1

相关推荐:《C语言视频教程

以上がC言語で文字列を比較する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C#と.NETランタイム:それらがどのように連携するかC#と.NETランタイム:それらがどのように連携するかApr 19, 2025 am 12:04 AM

C#と.NETランタイムは密接に連携して、開発者に効率的で強力なプラットフォームの開発機能に力を与えます。 1)C#は、.NETフレームワークとシームレスに統合するように設計されたタイプセーフおよびオブジェクト指向のプログラミング言語です。 2).NETランタイムは、C#コードの実行を管理し、ガベージコレクション、タイプの安全性、その他のサービスを提供し、効率的でクロスプラットフォームの操作を保証します。

C#.NET開発:始めるための初心者向けガイドC#.NET開発:始めるための初心者向けガイドApr 18, 2025 am 12:17 AM

C#.NET開発を開始するには、次のことが必要です。1。C#の基本的な知識と.NETフレームワークのコア概念を理解する。 2。変数、データ型、制御構造、関数、クラスの基本概念をマスターします。 3。LINQや非同期プログラミングなど、C#の高度な機能を学習します。 4.一般的なエラーのためのデバッグテクニックとパフォーマンス最適化方法に精通してください。これらの手順を使用すると、C#.NETの世界に徐々に浸透し、効率的なアプリケーションを書き込むことができます。

C#と.NET:2つの関係を理解し​​ますC#と.NET:2つの関係を理解し​​ますApr 17, 2025 am 12:07 AM

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プ​​ラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

c#.netの継続的な関連性:現在の使用法を見るc#.netの継続的な関連性:現在の使用法を見るApr 16, 2025 am 12:07 AM

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

Webからデスクトップまで:C#.NETの汎用性Webからデスクトップまで:C#.NETの汎用性Apr 15, 2025 am 12:07 AM

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

c#.net and the Future:新しいテクノロジーへの適応c#.net and the Future:新しいテクノロジーへの適応Apr 14, 2025 am 12:06 AM

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netはあなたにぴったりですか?その適用性の評価c#.netはあなたにぴったりですか?その適用性の評価Apr 13, 2025 am 12:03 AM

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NET内のC#コード:プログラミングプロセスの調査.NET内のC#コード:プログラミングプロセスの調査Apr 12, 2025 am 12:02 AM

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。