问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

[C语言] 关于strcmp函数的用法。万分感谢!

发布网友 发布时间:2022-05-13 23:07

我来回答

5个回答

热心网友 时间:2023-11-05 03:41

strcmp的原型是int strcmp(const char *s1,
const char *s2),s1、s2都被const修饰,可见函数体中对两个字符串进行只读操作。

比较从左至右按字符一一对应进行,遇到不等时得出结果,停止操作;无论哪个字符串先到达'\0','\0'也参与比较。

当s1的某个字符的ASCII值>s2对应字符的ASCII值时,函数返回+1,反之返回-1,当s1、s2完全一样(等长,对应字符相同)时返回0。

举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void){
    char *s1="12345fjksld;ajfkl;",*s2="12a",*s3="12a";
    printf("s1<-->s2: %d\n",strcmp(s1,s2));//输出-1,说明大小不由长度确定
    printf("s2<-->s3: %d\n",strcmp(s2,s3));//长度和字符对应相等是才输出0
    printf("s2<-->s1: %d\n",strcmp(s2,s1));//是参数1与参数2对比而不是相反
    printf("\n");
    return 0;
}

热心网友 时间:2023-11-05 03:42

这样吧,我简单给你说一下你应该就能懂了
"computer">"compare"中computer的第一个字母(c)和compare中的第一个字母(c)比较,如果对应的ASCII相同的话就进行第二个字母的比较,这样依次下去知道比较到不同的或是比较完为止。
而“dbase” “C Language”中第一个字母就不相同了,d对应的ASCII为100,而C对应的ASCII为67,然后就直接停止比较了,所以结果为“dbase”>“C Language”,现在知道了吧

热心网友 时间:2023-11-05 03:42

strcmp的函数代码实现模拟为如下:
#include
<stdio.h>
int
strcmp(char
*str1,char*str2)
{
char
*
p1=str1,
*p2=str2;
while(*p1
&&
*p2)
{
if(*p1>*p2)
{
return
1;
}
else
if(*p1<*p2)
{
return
-1;
}
p1++;
p2++;
}
if(*p1==0
&&
*p2==0)
{
return
0;
}
else
if(*p1==0
&&
*p2!=0)
{
return
-1;
}
else
{
return
1;
}
}
void
main()
{
printf("%d\n",strcmp("hello1","hello"));
printf("%d\n",strcmp("computer","compare"));
printf("%d\n",strcmp("dbase","C
Language"));
}
请自己看代码,也简单。

热心网友 时间:2023-11-05 03:43

第一个前面都相等, 比到第5个字符的时候u > a 所以前一个字符串大于后一个

第二个比到第一个字符 d > C 所以前一个比较大

热心网友 时间:2023-11-05 03:43

strcmp的函数代码实现模拟为如下:

#include <stdio.h>

int strcmp(char *str1,char*str2)
{
char * p1=str1, *p2=str2;
while(*p1 && *p2)
{
if(*p1>*p2)
{
return 1;
}
else if(*p1<*p2)
{
return -1;
}

p1++;
p2++;
}
if(*p1==0 && *p2==0)
{
return 0;
}
else if(*p1==0 && *p2!=0)
{
return -1;
}
else
{
return 1;
}
}

void main()
{
printf("%d\n",strcmp("hello1","hello"));
printf("%d\n",strcmp("computer","compare"));
printf("%d\n",strcmp("dbase","C Language"));
}

请自己看代码,也简单。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我这个配置能玩大唐无双2吗 PK什么的能卡么? 求高手解答 这样的配置还要加什么玩大唐无双才不卡 这个配置能玩大唐无双双开吗? windows7旗舰版系统玩大唐无双零双开卡怎么办?卡死了。 玩大唐无双的时候双开过地图太卡怎么解决啊 全民枪战我用QQ号,但它说密码数字英文,下划线组成,应该怎样弄啊?_百 ... 小太阳取暖器头晕呕吐 取暖器用的会头晕吗,可能的原因和使用注意事项 男孩姓孙含越字好名字 简单特别的男孩名字越 中间是越的男孩名字大全 C语言strcmp 使用方法 iphone卸载应用和删除应用 如何看待长辈(亲戚)要吃自己的宠物? 女朋友送了我一只宠物狗之后我如果把那只狗吃掉了的话会怎样呢? 推荐一种可以吃蔬菜养活的易养的小宠物 王珞丹被吃掉的宠物鸭吉吉,到底是什么来历? 有一只吃货宠物是个什么体验? 专门吃水果的宠物 企业质量管理专员年终总结怎么写 EasyRecovery恢复的视频文件怎么播放不了啊? win10任务栏运行任务隐藏怎么弄 华为查找手机定位用的是哪种地图 win10之前切任务管理器都会跳转到桌面,可是现在怎么不跳出去了? win10系统任务管理器下面切换到命令不能用? win10 lol画面卡呢了 切换不了桌面 任务管理器也切不过来 还非跌重启 如何设置Linksys无线路由器之步骤 关于LINKSYS BEFW11S4无线路由器设置 正阳门下电视剧全集百度影音? JAVA面向对象中如何分析内存布局,求高手解答 求解一元一次方程“x-x&#47;(1+3%)*3%*112%=1-1&#47;(1+17%)*17%*112%”请列出详细excel公式? C语言中strcmp函数怎么用啊 strcmp();用法 适合减肥的户外运动有哪些? c++关于strcmp使用问题? 问:vs2013编C语言时,怎么用strcmp函数? 集装箱运输合同范本 如何找回桌面丢失的图标 谁知道,又是清秋雨,这首歌歌词与简谱 研语芳华什么意思 幼儿园上班好累的句子 一指苍茫处 淡淡流年香的出处 100%的桑蚕丝T恤用洗衣机洗了会出现什么情况 好看的总裁虐文,推荐一些吖 有没有什么好看经典的总裁虐文啊!求多! 请大家帮忙推荐几本好看的总裁虐文 求总裁系列的虐文,超虐的 求总裁系列的虐文小说 为了提高程序运行效率提前从存储器取出N条指令组成指令队列以备CPU读取执行,假设指令队列中? 一般事故的罚款金额是 在8086微机系统中,堆栈内数据存储的规则是什么?指令队列代码存取的特点又是什么?