在写C语言程序时,经常会遇到需要判断两个ref="/tag/255/" style="color:#643D3D;font-weight:bold;">字符串是否相同的情况。比如用户登录时输入密码,程序就得比对输入的密码和正确密码是不是一致。这时候,strcmp这个库函数就派上用场了。
strcmp 是干什么的?
strcmp是C标准库
它的返回值有三种情况:
- 返回 0:表示两个字符串完全相同;
- 返回正数:表示第一个字符串在字典序上大于第二个;
- 返回负数:表示第一个字符串在字典序上小于第二个。
怎么用 strcmp?
使用起来很简单,先包含头文件,然后调用函数就行。下面是个小例子:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "world";
if (strcmp(str1, str2) == 0) {
printf("两个字符串相同\n");
} else {
printf("两个字符串不同\n");
}
return 0;
}
这段代码会输出“两个字符串不同”,因为"hello"和"world"明显不一样。如果把str2改成"hello",那就会输出“两个字符串相同”了。
注意大小写问题
strcmp是区分大小写的。比如"Hello"和"hello"会被认为是两个不同的字符串。如果你希望忽略大小写,得用另一个函数strcasecmp(在某些系统上叫_stricmp)。
实际应用场景
假设你在做一个简单的命令解析器,用户输入start、stop或help,程序要根据输入执行不同操作。这时候就可以用strcmp来判断:
char command[20];
printf("请输入命令:");
scanf("%s", command);
if (strcmp(command, "start") == 0) {
printf("正在启动服务...\n");
} else if (strcmp(command, "stop") == 0) {
printf("正在停止服务...\n");
} else if (strcmp(command, "help") == 0) {
printf("可用命令:start, stop, help\n");
} else {
printf("未知命令\n");
}
这样写起来清晰又直接,适合初学者理解和使用。
记住,strcmp只适用于以\0结尾的C风格字符串。如果处理的是字符数组但没有正确结束符,结果可能出乎意料。所以定义字符串时,尽量用双引号,让编译器自动加上结束符。