Heim >Backend-Entwicklung >C#.Net-Tutorial >So vergleichen Sie Zeichenfolgen in der C-Sprache
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.
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!