C语言 比较字符串的大小关系

头文件原型说明返回值
#include<stdio.h>int strcmp(const char *s1, const char *s2)比较s1指向的字符串和s2指向的字符串的大小关系(从第一个字符开始逐一比较,当出现不同的字符时,便可确定这些字符的大小关系)。若s1 和 s2相等,则返回0;若s1 大于 s2,则返回正整数值;若s1 小于 s2,则返回负整数值。
#include <stdio.h>
#include <string.h>

int main(void){
	char str[] = "1";
	char *p = "2";
	
	if(strcmp(str, p) == 0){
		puts("str 等于 *p");
	}else if(strcmp(str, p) > 0){
		puts("str 大于 *p");
	}else{
		puts("str 小于 *p");
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

strcmp函数实现:

int strcmp(const char *s1, const char *s2){
	while (*s1 == *s2){
		if(*s1 == '\0'){
			return 0;
		}
		s1++;
		s2++;
	}
	
	return (unsigned char)*s1 - (unsigned char)*s2;
}
strncmp函数指定前n个字符串进行比较
头文件原型说明返回值
#include<stdio.h>int strncmp(const char *s1, const char *s2, size_t n)比较s1指向的字符的数组和s2指向的字符的数组的前n个字符的大小关系。若s1 和 s2相等,则返回0;若s1 大于 s2,则返回正整数值;若s1 小于 s2,则返回负整数值。
#include <stdio.h>
#include <string.h>

int main(void){
	char str[] = "423";
	char *p = "192";
	
	if(strncmp(str, p, 2) == 0){
		puts("str 等于 *p");
	}else if(strncmp(str, p, 2) > 0){
		puts("str 大于 *p");
	}else{
		puts("str 小于 *p");
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

strncmp函数实现:

int strncmp(const char *s1, const char *s2, size_t n){
	while (n && *s1 && *s2){
		if(*s1 != *s2){
			return (unsigned char)*s1 - (unsigned char)*s2;
		}
		s1++;
		s2++;
		n--;
	}
	
	if(!n){
		return 0;
	}
	
	if(*s1){
		return 1;
	}
	
	return -1;
}

总结:

  • strcmp 函数 和 strncmp函数对字符串大小的判断,是基于字符编码进行的。字符编码表示字符的值,它依赖于该环境中采用的字符编码体系。
  • strcmp 函数 和 strncmp函数不能进行具有可移植性(不依赖于运行环境中采用字符编码等)的字符串的比较。
  • strncmp函数开头n个字符内没有null字符也可以进行比较(不是字符串也可以进行比较)。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 C 语言中,可以使用内置的函数 strcmp 来比较两个字符串大小。这个函数接受两个参数,分别是要比较的两个字符串,并返回一个整数。如果第一个字符串小于第二个字符串,那么 strcmp 会返回一个负数;如果两个字符串相等,那么 strcmp 会返回 0;如果第一个字符串大于第二个字符串,那么 strcmp 会返回一个正数。 例如: ``` #include <stdio.h> #include <string.h> int main() { char str1[] = "abc"; char str2[] = "def"; char str3[] = "abc"; int result; result = strcmp(str1, str2); printf("strcmp(str1, str2) = %d\n", result); result = strcmp(str1, str3); printf("strcmp(str1, str3) = %d\n", result); return 0; } ``` 输出结果为: ``` strcmp(str1, str2) = -3 strcmp(str1, str3) = 0 ``` 注意,strcmp 函数是区分大小写的,因此 "ABC" 和 "abc" 在使用 strcmp 函数比较时是不相等的。如果需要忽略大小写进行比较,可以使用函数 strcasecmp(不区分大小写的版本)或 stricmp(Windows 专有函数,也是不区分大小写的版本)。 另外,C 语言还提供了另一个函数 strncmp,它可以对字符串进行前 n 个字符的比较。例如: ``` #include <stdio ### 回答2: 在C语言中,字符串比较可以使用strcmp()函数来实现。strcmp()函数接受两个字符串参数,并返回一个整数值来表示它们的比较结果。 当字符串相等时,strcmp()函数返回0;当第一个字符串小于第二个字符串时,返回一个负数;当第一个字符串大于第二个字符串时,返回一个正数。 下面是一个简单的示例代码,展示了如何使用strcmp()函数来比较字符串大小: ``` #include <stdio.h> #include <string.h> int main() { char str1[100]; char str2[100]; printf("请输入第一个字符串:"); scanf("%s", str1); printf("请输入第二个字符串:"); scanf("%s", str2); int result = strcmp(str1, str2); if (result < 0) { printf("第一个字符串小于第二个字符串\n"); } else if (result > 0) { printf("第一个字符串大于第二个字符串\n"); } else { printf("两个字符串相等\n"); } return 0; } ``` 在这个示例中,我们首先声明了两个字符串数组str1和str2,然后使用scanf()函数分别从键盘输入两个字符串。 接下来,我们调用strcmp()函数将str1和str2作为参数传入,并将其返回值赋给result变量。 最后,我们使用if-else语句根据result的值来判断两个字符串大小关系,并输出对应的结果。 以上就是使用C语言实现字符串比较大小的方法。 ### 回答3: 在C语言中,字符串比较需要使用字符串库中的函数来完成。常用的字符串比较函数是strcmp()函数。 strcmp()函数的原型如下: int strcmp(const char *str1, const char *str2); 该函数接受两个参数,分别是待比较字符串str1和str2。函数比较两个字符串的ASCII码值,如果str1比str2小,则返回负值;如果str1和str2相等,则返回0;如果str1比str2大,则返回正值。 例如,如果我们有两个字符串str1和str2,可以通过以下代码比较它们的大小: ```c #include <stdio.h> #include <string.h> int main(){ char str1[] = "abc"; char str2[] = "def"; int result = strcmp(str1, str2); if(result < 0){ printf("str1小于str2\n"); } else if(result == 0){ printf("str1等于str2\n"); } else{ printf("str1大于str2\n"); } return 0; } ``` 输出结果为: ``` str1小于str2 ``` 通过调用strcmp()函数,我们可以得到两个字符串大小关系。这在处理字符串的排序、查找等问题时非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值