Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中比较字符串的最快方法_C_String_Comparison_Type Conversion - Fatal编程技术网

C中比较字符串的最快方法

C中比较字符串的最快方法,c,string,comparison,type-conversion,C,String,Comparison,Type Conversion,如果我有一个程序需要比较很多字符串,那么最好的方法是什么,以使运行时间最少?您可以使用strcmp(string1,string2) 如果它们是字符串数组:strcmp(string1[i],string2[j]) 它将返回一个数字: 如果是0,那么它们是相同的 如果大于0,则字符串1按字母顺序大于第二个 如果小于0,则字符串1按字母顺序比第二个小 strcmp()-比较两个字符串 const char *s1, *s2; const char *s1, *s2; 是要比较的字符串 int

如果我有一个程序需要比较很多字符串,那么最好的方法是什么,以使运行时间最少?

您可以使用strcmp(string1,string2)

如果它们是字符串数组:
strcmp(string1[i],string2[j])

它将返回一个数字:

  • 如果是0,那么它们是相同的
  • 如果大于0,则字符串1按字母顺序大于第二个
  • 如果小于0,则字符串1按字母顺序比第二个小
strcmp()
-比较两个字符串

const char *s1, *s2;
const char *s1, *s2;
是要比较的字符串

int i;
i = strcmp( s1, s2 );
size_t N;
给出了比较的结果<如果字符串相同,则code>i
为零<如果字符串
s1
大于字符串
s2
,则code>i为正;如果字符串
s2
大于字符串
s1
,则为负。根据ASCII排序顺序对“大于”和“小于”进行比较

strcmp()
将字符串
s1
与字符串
s2
进行比较。两个字符串都必须以常用的“
\0”
字符结尾


strncmp()

是要比较的字符串

int i;
i = strcmp( s1, s2 );
size_t N;
提供要检查的字符数

int i;
i = strncmp( s1, s2, N );
int i;
i = memcmp( s1, s2, N );
给出了比较的结果<如果字符串的第一个
N
字符相同,则code>i为零<如果字符串“s1”大于字符串
s2
,则代码>i为正;如果字符串“s2”大于字符串
s1
,则代码>i为负。根据ASCII排序顺序对“大于”和“小于”进行比较

strncmp()
将字符串
s1
的前N个字符与字符串
s2
的前N个
N
字符进行比较。如果一个或两个字符串短于
N
个字符(即
strncmp()
遇到“
\0”
),比较将在该点停止。因此,
N
表示要检查的最大字符数,而不是确切的数字。(请注意,如果
N
为零,
strncmp()
将始终返回零——未检查任何字符,因此未发现任何差异。)


是要比较的字符串。 尺寸

提供要检查的字符数

int i;
i = strncmp( s1, s2, N );
int i;
i = memcmp( s1, s2, N );
给出了比较的结果<如果字符串的第一个
N
字符相同,则code>i为零<如果字符串“s1”大于字符串
s2
,则代码>i为正;如果字符串
s2
大于字符串
s1
,则代码>i为负。根据ASCII排序顺序对“大于”和“小于”进行比较

memcmp()

与函数
strncmp()
不同,
memcmp()
不检查是否有终止任一字符串的
'\0'
。因此,它检查完整的
N
字符,即使字符串实际上没有那么长


函数
wmemcmp()
比较从a1开始的宽码字符与从a2开始的宽码字符。返回的值小于或大于零,这取决于第一个不同的宽字符是a1小于还是大于a2中的相应字符

如果两个块的内容相等,
wmemcmp()
返回0

在任意数组上,
memcmp()
函数对于测试相等性非常有用。在字节以外的数组上进行字节顺序比较通常是没有意义的。例如,对构成浮点数的字节进行逐字节比较,不太可能告诉您浮点数的值之间的关系


wcscmp函数比较宽字符串ws1和ws2。返回的值小于或大于零,这取决于第一个不同的宽字符是ws1,还是小于或大于ws2中的相应字符

如果两个字符串相等,
wcscmp()
返回0

wcscmp()
使用的排序结果是,如果ws1是
ws2
的初始子字符串,则ws1被视为“小于”ws2

wcscmp()
不考虑字符串编写语言的排序约定。要获得该值,必须使用
wcscoll


此函数类似于
wcscmp()
,只是忽略了大小写的差异。大小写字符的关联方式由当前选定的区域设置决定。在标准的“C”语言环境中,字符Ä和ä不匹配,但在将这些字符视为字母表的一部分的语言环境中,它们确实匹配


strcmpi()
比较
string1
string2
而不区分大小写在比较之前,两个参数string1和string2中的所有字母字符都转换为小写

该函数对以null结尾的字符串进行操作。函数的字符串参数应包含一个空字符
'\0'
,用于标记字符串的结尾

strcmpi()
返回一个值,指示两个字符串之间的关系,如下所示

小于0
string1
小于
string2

0
string1
相当于string2

大于0
string1
大于
string2


此函数类似于strcmp()
,只是忽略了大小写之间的差异。大小写字符的关联方式由当前选定的区域设置决定。在sta中
strcmpi()

int strcmpi(const char *string1, const char *string2);
strcasecmp()
int strcasecmp(const char *s1, const char *s2);
strncasecmp()
int strncasecmp(const char *s1, const char *s2, size_t n);