C 语言中的 Strcmp() 函数

2025 年 3 月 28 日 | 阅读 3 分钟

C 标准库包含用于字符串比较strcmp() 函数。在 C 语言编程中,它经常用于比较两个字符串,并且是 <string.h> 头文件的一部分。该函数的返回值是一个整数值,表示两个字符串之间的关系。

strcmp(first_string, second_string) 函数比较两个字符串,如果两个字符串相等则返回 0。

指向要比较的第一个字符串指针,即str1

指向要比较的第二个字符串指针,即str2

如果str1字典序上大于str2,则返回一个大于0的整数。

如果str1字典序上小于str2,则返回一个小于0整数值

如果str1str2相等,则返回0

在这里,我们使用的是 gets() 函数,它从控制台读取字符串。

示例

输出

Enter 1st string: hello
Enter 2nd string: hello
Strings are equal

说明

程序包含适当的头文件,包括用于处理标准输入/输出“stdio.h”和用于处理字符串(包括strcmp())的“string.h”

声明了两个大小为20的字符数组str1str2,用于存储用户输入的字符串

使用printf() 方法,程序提示用户输入第一个字符串。

使用gets() 方法从控制台读取输入字符串。但是,需要强调的是,由于容易受到缓冲区溢出攻击,gets() 已被弃用且不推荐使用。同样,程序会提示用户输入第二个字符串,然后再使用gets() 读取它。

之后,使用strcmp() 方法str1str2两个字符串进行比较。

如果strcmp()返回0,表示两个字符串相等,则程序使用printf()输出“字符串相等”

否则,如果strcmp()返回非零结果,程序将输出“字符串不相等”

最后,main 函数返回 0,表示程序已成功运行。

strcmp() 方法逐个字符比较两个字符串。比较过程从每个字符串的第一个字符开始。如果它们相等,则继续比较后续字符,直到

它根据匹配字符之间的差异,或者其中一个或两个字符串都到达末尾,来决定哪个字符串在字典序上更大更小

比较时使用字符的ASCII 值

大写字母小写字母在比较中被视为不同,因为它会考虑大小写。

该函数假定输入的字符串是以 null 结尾的。以null 字符 ('0') 结尾的字符串称为以 null 结尾的字符串

在此示例中,使用gets() 函数从控制台读取字符串。需要注意的是,gets() 方法在 C 语言中已被弃用,强烈不推荐使用。该问题的主要原因是gets() 没有方法来控制从输入中读取多少字符,这使其容易受到缓冲区溢出攻击,从而可能导致安全漏洞。

建议使用fgets() 而不是控制台来安全地读取字符串。为了避免缓冲区溢出fgets() 函数允许您设置要读取的最大字符数。


下一个主题C strrev()