Heim  >  Artikel  >  Backend-Entwicklung  >  So vergleichen Sie Zeichenfolgen in der C-Sprache

So vergleichen Sie Zeichenfolgen in der C-Sprache

青灯夜游
青灯夜游Original
2021-05-08 15:05:4539740Durchsuche

Vergleichsmethoden: 1. bcmp(), vergleicht die ersten n Bytes einer Zeichenfolge auf Gleichheit; 3. strictmp(), vergleicht Zeichen ohne Berücksichtigung der Groß-/Kleinschreibung; String; () oder strnicmp(), Vergleich der ersten n Zeichen der Zeichenfolge unter Beachtung der Groß-/Kleinschreibung.

So vergleichen Sie Zeichenfolgen in der C-Sprache

Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, Dell G3-Computer.

Verwenden Sie bcmp() – vergleichen Sie die ersten n Bytes des Speichers (String), um zu sehen, ob sie gleich sind

Der Prototyp ist:

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

[Parameter] s1, s2 sind die beiden Teile des Speichers (bzw zwei Zeichenfolgen), n ist die Länge, die verglichen werden soll.

【Rückgabewert】Wenn die ersten n Bytes von s1 und s2 gleich sind oder n gleich 0 ist, dann wird 0 zurückgegeben, andernfalls wird ein Wert ungleich 0 zurückgegeben.

bcmp()-Funktion prüft nicht auf NULL.

Tatsächlich haben bcmp () und memcmp () dieselbe Funktion und werden verwendet, um zu vergleichen, ob die ersten n Bytes des Speicherblocks gleich sind. Die beiden Parameter s1 und s2 sind jedoch Zeiger und befinden sich seltsamerweise in der Zeichenfolge .h-Datei. Kann auch zum Vergleichen von Zeichenfolgen verwendet werden.

Beispiel:

#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;
}

Verwenden Sie strcmp() – Zeichenfolgen vergleichen (Groß-/Kleinschreibung beachten)

Der Prototyp ist:

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

[Parameter] s1, s2 sind die beiden Zeichenfolgen, die verglichen werden müssen.

Der Vergleich der Zeichenfolgengrößen wird durch die Reihenfolge in der ASCII-Codetabelle bestimmt, und diese Reihenfolge ist auch der Wert der Zeichen. strcmp() subtrahiert zunächst den ersten Zeichenwert von s1 vom ersten Zeichenwert von s2. Wenn die Differenz 0 ist, wird der Vergleich mit dem nächsten Zeichen fortgesetzt. Wenn die Differenz nicht 0 ist, wird die Differenz zurückgegeben. Wenn Sie beispielsweise die Zeichenfolgen „Ac“ und „ba“ vergleichen, wird die Differenz (-33) zwischen den Zeichen „A“ (65) und „b“ (98) zurückgegeben.

[Rückgabewert] Wenn die Zeichenfolgen der Parameter s1 und s2 gleich sind, wird 0 zurückgegeben. Wenn s1 größer als s2 ist, wird ein Wert größer 0 zurückgegeben. Wenn s1 kleiner als s2 ist, wird ein Wert kleiner als 0 zurückgegeben.

Hinweis: strcmp() führt Vergleiche im Binärformat durch und berücksichtigt keine Multibyte- oder Widebyte-Zeichen.

Beispiel:

#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));
}

Ausgabe:

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

Verwenden Sie strictmp() – Vergleichen Sie Zeichenfolgen (ohne Berücksichtigung der Groß-/Kleinschreibung)

Der Prototyp ist:

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

[Parameterbeschreibung] s1, s2 sind die beiden, die sein müssen verglichene Zeichenfolge.

Der Vergleich der Zeichenfolgengrößen wird durch die Reihenfolge in der ASCII-Codetabelle bestimmt, und diese Reihenfolge ist auch der Wert der Zeichen. strictmp() subtrahiert zunächst den ersten Zeichenwert von s1 vom ersten Zeichenwert von s2. Wenn die Differenz 0 ist, wird der Vergleich mit dem nächsten Zeichen fortgesetzt. Wenn die Differenz nicht 0 ist, wird die Differenz zurückgegeben. Wenn Sie beispielsweise die Zeichenfolgen „Ac“ und „ba“ vergleichen, wird die Differenz (-33) zwischen den Zeichen „A“ (65) und „b“ (98) zurückgegeben.

[Rückgabewert] Wenn die Zeichenfolgen der Parameter s1 und s2 gleich sind, wird 0 zurückgegeben. Wenn s1 größer als s2 ist, wird ein Wert größer 0 zurückgegeben. Wenn s1 kleiner als s2 ist, wird ein Wert kleiner als 0 zurückgegeben.

Hinweis: strictmp() gibt es nur unter Windows. Die Funktion mit derselben Funktion unter Linux ist strcasecmp(), die in der Header-Datei strings.h enthalten ist.

Eine weitere Funktion, die Zeichenfolgen ohne Berücksichtigung der Groß- und Kleinschreibung vergleicht, ist strcmpi(), die Makrodefinition von strictmp(), diese Funktion wird jedoch nicht bereitgestellt.

Beispiel: Vergleichen Sie die Größe zweier Zeichenfolgen.

#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;
}

Ausgabe:

Result: s1 > s2

Verwenden Sie strncmp() – Vergleichen Sie die ersten n Zeichen der Zeichenfolge (Groß- und Kleinschreibung beachten)

Der Prototyp lautet:

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

[Parameter] str1, str2 sind die beiden Zeichen, die benötigt werden Die zu vergleichende Zeichenfolge ist n die Anzahl der zu vergleichenden Zeichen.

Der Vergleich der Zeichenfolgengrößen wird durch die Reihenfolge in der ASCII-Codetabelle bestimmt, und diese Reihenfolge ist auch der Wert der Zeichen. strncmp() subtrahiert zunächst den ersten Zeichenwert von s2 vom ersten Zeichenwert von s1. Wenn die Differenz 0 ist, wird der Vergleich des nächsten Zeichens bis zum Ende der Zeichenmarkierung fortgesetzt.

另外一个不区分大小写比较字符串前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语言视频教程

Das obige ist der detaillierte Inhalt vonSo vergleichen Sie Zeichenfolgen in der C-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn