[C语言] 关于strcmp函数的用法。万分感谢!
百度百科说它是这样比的:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。我看不懂这句话,我想请大家详细分析电脑如何比较两个...
百度百科说它是这样比的:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
我看不懂这句话,我想请大家详细分析电脑如何比较两个例子,来告诉我这句话什么意思。
①"computer">"compare"
②“dbase”>“C Language”
这两个字符串,电脑是怎样比较的?请各位一步一步的分析。万分感谢! 展开
我看不懂这句话,我想请大家详细分析电脑如何比较两个例子,来告诉我这句话什么意思。
①"computer">"compare"
②“dbase”>“C Language”
这两个字符串,电脑是怎样比较的?请各位一步一步的分析。万分感谢! 展开
展开全部
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;
}
展开全部
这样吧,我简单给你说一下你应该就能懂了
"computer">"compare"中computer的第一个字母(c)和compare中的第一个字母(c)比较,如果对应的ASCII相同的话就进行第二个字母的比较,这样依次下去知道比较到不同的或是比较完为止。
而“dbase” “C Language”中第一个字母就不相同了,d对应的ASCII为100,而C对应的ASCII为67,然后就直接停止比较了,所以结果为“dbase”>“C Language”,现在知道了吧
"computer">"compare"中computer的第一个字母(c)和compare中的第一个字母(c)比较,如果对应的ASCII相同的话就进行第二个字母的比较,这样依次下去知道比较到不同的或是比较完为止。
而“dbase” “C Language”中第一个字母就不相同了,d对应的ASCII为100,而C对应的ASCII为67,然后就直接停止比较了,所以结果为“dbase”>“C Language”,现在知道了吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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"));
}
请自己看代码,也简单。
#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"));
}
请自己看代码,也简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个前面都相等, 比到第5个字符的时候u > a 所以前一个字符串大于后一个
第二个比到第一个字符 d > C 所以前一个比较大
第二个比到第一个字符 d > C 所以前一个比较大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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"));
}
请自己看代码,也简单。
#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"));
}
请自己看代码,也简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询