strcmp函数比较字符串怎么比较大小,c语言中比较两个字符串的大小
strcmp函数比较字符串怎么比较大小,c语言中比较两个字符串的大小详细介绍
本文目录一览: 用strcmp函数怎么比较两个字符串的比较?
strcmp()函数是通过两个字符串一个一个字符比较的(最多比较次数为第二个参数的长度+1)
例如strcmp("hello","here");
首先比较第一个字符'h'= 'h'相等
接着比较第二个字符'e'= 'e'相等
.接着比较第三个字符 'l'>'e',返回一个正值
如果字符串完全相等会回0
strcmp是字符串比较函数,作用是比较字符串1和字符串2
如:strcmp(str1,str2);
strcmp("china","korea");
比较的结果由函数带回。
(1)如果字符串1=字符串2,函数值为0。
(2)如果字符串1〉字符串2,函数值为一正整数
(3)如果字符串1
<字符串2,函数值为一负整数
具体程序的例子:
#include
#include
#include
void
main()
{
char
a[50],b[50];
printf("请输入字符串a:
\n");
gets(a);
printf("请输入字符串b:
\n");
gets(b);
if(strcmp(a,b)>0)
printf("a>b");
else
if(strcmp(a,b)<0)
printf("a
<b");
else
if(strcmp(a,b)==0)
printf("a==b");
system("pause");
}
</b");
</字符串2,函数值为一负整数
字符串比较函数strcmp是怎样比较出两个字符串的大小的?
跟字符串的长度无关的.就是从两个字符串的头开始比.相应位的字符进行对比.实际上是比较相应位字符的ASCII码大小.如char
*s1="abc";char
*s2="bd";执行strcmp(s1,s2),其结果是负的.从两个字符串的头开始比,因为字符串s1中的'a'小于s2中的'b'所以s1
<s2;再如:char
*s1="abc";char
*s2="ad";其结果也是负的,因为s1中的'b'
<s2中的'd'再如:char
*s1="abc";char
*s2="ab";其结果就是正的.因为s1中的'c'大于s2中的'\0';因为字符串的最后一个字符是\0;再如:char
*s1="abc";char
*s2="abcd";其结果是负的.因为s1中的'\0'小于s2中的'd';
</s2中的'd'再如:char
</s2;再如:char
C语言中strcmp函数比较字符串大小是在比较字符串的什么?
图中的代码是错误的,不能通过编译的。因为'aBC'根本就是错误的。单引号内最多只能有一个字符。
strcmp是比较ascll码
如果是字符串的话 它是逐字符比较的
也就是说 如果两个字符串开头分别是a和A 那 无论后面的字符是什么 第一个字符串都比第二个大
首先strcmp比较字符串的大小比较的是字符串各个对应位置的字符的ASCII码的大小。
而这里输出的并不是谁大谁小,按%d格式输出的只不过是将多字节字符存储到内存后,连续4个字节的内容转换成整数后的结果,换句话说按%d输出'aBC'的结果是97*65536+66*256+67=6373955。
规则如下: 当s1 当s1=s2时,返回值= 0; 当s1>s2时,返回正数; 即:两个字符串自左向右逐个字符相比(按ascii值大小相比较),直到出现不同的字符或遇'\0'为止。如: "a"<"b"...
c语言中的strcmp函数比较字符串A和B,如果A中第一个字符的ASCII大于B中第一个字符串的ASCII,则A整体大于B;
若A中第一个字符ASCII等于B中第一个字符,则比较第二个字符的大小,依次类推
对于第二个问题,为什么小写字母的ASCII码比大写字母大,这个就不是程序员能知道的了,这个得问创作这个的人
c语言的strcmp函数怎么比较字符串?
strcmp函数用于两个字符串的比较,具体用法如下:
1、strcmp函数接受两个字符串类型的参数传入,根据比较结果返回一个int类型的值。
2、若返回结果的值小于 0,则表示在ASCII码上, str1字符串 小于 str2字符串。
3、若返回结果返回值 大于0,则代表 str2字符串 小于 str1字符串。
4、只有当返回值 为0时,两个字符串才是相同的。
扩展资料:
该函数只能用于比较字符串,不能比较数字等其他形式的参数,否则会报错。
根据ANSI的标准,函数的返回值为正数,负数,0 。不同的C返回的数值会有所不同。当两个字符串不相等时,C的标准没有规定返回值会是 1 或 -1,只规定了正数和负数。
通常情况下,会将两个字符的 ASCII 码之差作为比较结果由函数值返回。因此使用函数进行逻辑判断时应特别注意。
参考资料:
strcmp-百度百科
strcmp函数怎么用?
strcmp函数用法:
strcmp() 用来比较字符串(区分大小写),其原型为:int strcmp(const char *s1, const char *s2);s1, s2 为需要比较的两个字符串。
字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
举例:
#include
main(){
char *a = "aBcDeF";
char *b = "AbCdEf";
char *c = "aacdef";
char *d = "aBcDeF";
printf("strcmp(a, b) : %d\n", strcmp(a, b));
printf("strcmp(a, c) : %d\n", strcmp(a, c));
printf("strcmp(a, d) : %d\n", strcmp(a, d));
}
输出结果:
strcmp(a, b) : 32
strcmp(a, c) :-31
strcmp(a, d) : 0
扩展资料:
strcmp使用规则:
一、当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。有些实现会返回1或-1,但将返回值与1或-1做比较的人,都是不合格的程序。
二、有些会把两个字符的ASCII码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑。
参考资料来源:百度百科—strcmp
c语言中比较两个字符串的大小
一:(这个调用了 string.h 头函数)
#include
#include
void comparision(char a[],char b[])
{
if(strcmp(a,b)>0) printf("a[40]>b[40]");
else if(strcmp(a,b)==0) printf("a[40]=b[40]");
else printf("a[40]
<b[40]");
}
main(void)
{
char a[40],b[40];
gets(a);
gets(b);
comparision(a,b);
}
2:这个是普通方法 不调用函数strcmp();
#include
int comparision(char a[],char b[])
{
int t,i=0;
while(a[i]!='\0'||b[i]!='\0')
{
if(a[i]==b[i]) t=0;
else if(a[i]>b[i]) t=1;
else t=-1;
if(t!=0) break;
i++;
}
return t;
}
main(void)
{
char a[40],b[40];
int k=0;
gets(a);
gets(b);
k=comparision(a,b);
if(k==1) printf("a[40]>b[40]");
else if(k==-1) printf("a[40]
<b[40]");
else printf("a[40]=b[40]");
}
#include
int comparison(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0'||b[i]!='\0';i++)
{
if(a[i]>b[i]) return 1;
else if(a[i]
<b[i]) return -1;
}
if(a[i]=='\0'&&b[i]=='\0') return 0;
if(a[i]=='\0') return -1;
return 1;
}
void main()
{
char a[100],b[100];
int t;
printf("请输入两个字符串:\n");
scanf("%s%s",a,b);
t=comparison(a,b);
if(t==1) printf("%s > %s",a,b);
else if(t==-1) printf("%s < %s",a,b);
else printf("%s == %s",a,b);
printf("\n");
}
int comparison(char *str1,char *str2)
{
while(*str1!='\0'&&*str1!='\0')
{ if(*str1==*str2)
{ str1++; str2++;
}
else return *str1-str2;
}
return 0;
}
在C语言中比较字符串大小,可以使用库函数strcmp,也可以自己编写比较函数。
1、使用库函数。
需要包含头文件string.h。声明为:
int strcmp(const char *s1, const char *s2);
会根据字典序比较s1和s2, 如果二者相等,则返回0;如果s1较小则返回-1;如果s1较大则返回1。
比如
strcmp("123", "123") 结果为0。
strcmp("123", "456") 结果为-1。
strcmp("456", "123") 结果为1。
2、自定义函数。
实现字符串比较的方法有很多,其基本原理为按字节比较。
举例如下:
int my_strcmp(char *s1, char *s2){ int i; for(i = 0; s1[i] == s2[i] && s1[i]!=0; i++);//循环比较,达到结束或者出现不相等值时退出循环。 if(s1[i] == s2[i]) return 0;//代表全部相等,返回0 if(s1[i]
<s2[i]) return -1; s1较小,返回-1。 1; s1较大,返回1.}
</b[40]");
</b[40]");
请问C语言字符串中既有数字还有字母 如何进行大小比较 用什么函数实现 谢谢大家啦
再程序添加#include
头文件引用,
在函数里就可以用strcmp(str1,str2)比较str1和str2的大小,与字母数字都无关
可以使用 strcmp(str1,str2)
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1
<str2,则返回负数;
若str1>str2,则返回正数。
是根据ASCII码比较的,包含在 string.h 头文件里
从左向右逐个字符进行比较。比较原则为空格最小,数字
<大写字母<小写字母。
同为数字、大写字母、小写字母则'0'<'9'、'A'<'Z'、'a'<'z'。
若有比较结果为二个字符不相等,则二个字符串的比较结束。字符比较大小的结果,就是字符串大小比较的结果。
如果二个字符串的前若干个字符逐一对应相同,字符串长度也相同,则两个字符串相等。
如果二个字符串的前若干个字符逐一对应相同,字符串长度不相同,则较长的那个字符串为大。
使用函数strcmp(s1,s2),需要包含头文件string.h
若结果为正,表示s1>s2;
若结果为负,表示s1
<s2;
若结果为0,表示s1==s2;
</s2;
</大写字母<小写字母。
</str2,则返回负数;
PHP中的strcmp()函数对数组元素进行字符串比较;是怎么比较的?是大到小还是小到大?
PHP里的strcmp()函数有两个参数,完整形式为:
strcmp(string1,string2)
其返回结果在:
(a) string1跟string2相等时,返回等于0
(b)string1比string2小时,返回值< 0
(c)string1比string2大时,返回值> 0
具体的比较大小,我给你举两个例子就知道了:
相等的情况就不用说了,假设string1是abcde,string2是abced,那么比较的时候
从第一个字符开始比较,发现都是a,不能决定结果
继续比较第二个字符,发现都是b,不能决定结果
继续比较第三个字符,发现都是c,不能决定结果
继续比较第四个字符,发现stirng1中的是d,而string2中的是e,比较他们的ASCII码
d要比e小,因此,string1比string2小,后面的就不比较了,到这里就结束了,返回一个小于零的值
如果一个长一个短,怎么办呢?比如string1是hello, string2是helloworld
此时比较到o之后,发现string1已经结束了,而string2还没结束,认为string1 < string2
这就好比按照大小个排队,个子矮的站在前面了,认为是小的。
明白了吧:)
另外,学习使用函数的时候,应该善于查手册,比如这里:
http://php.net/manual/en/function.strcmp.php
希望对你有所帮助,如果还有问题,欢迎交流:)
c语言中strcmp函数 如果两个字符串长度不一样时要怎么比较大小啊?
它是从第一个字母开始比较的,就是逐个比较字母呗,直到出现结果为止。这个比较与字符串的长度没有必然关系的。例如:love>abandon.
它的原理可以用以下程序解释:
#include
void main()
{
int i=0;
int c,d;
char a[100],b[100];
printf("输入第一串字符\n");
gets(a);
printf("输入第二串字符\n");
gets(b);
while(a[i]!='\0'&&b[i]!='\0')
{
c=a[i];
d=b[i];
if(c>d) {printf("%d\n",c-d);
break;}
if(c
<d) {printf("%d\n",-(d-c));
break;}
i++; }
}
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止,如”abc"和“ad"比,先比较'a'和'a',一样大小,然后比较'b'和'd',因为'b'<'d'所以返回-1;
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
http://baike.baidu.com/view/1026924.htm
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。
#define debug
/*
this routine is made by elapser ;
*/
int elapser_strcmp (char* pstra ,char* pstrb)
{
if (pstra == 0 || pstrb == 0)
return 0 ;
while (*pstra != '\0' && *pstrb != '\0' && *pstra == *pstrb)
{
pstra++ ;
pstrb++ ;
}
return *pstra - *pstrb ;
}
#ifdef debug
int main ()
{
int elapser_strcmp (char* pstra ,char* pstrb) ;
char* pstra = "abcdefg" ;
char* pstrb = "abcd" ;
char* pstrc = "abcdefg" ;
char* pstrd = "abcdgg" ;
printf ("stra ? strb is %d\n" ,elapser_strcmp (pstra ,pstrb)) ;
printf ("stra ? strc is %d\n" ,elapser_strcmp (pstra ,pstrc)) ;
printf ("stra ? strd is %d\n" ,elapser_strcmp (pstra ,pstrd)) ;
return 0 ;
}
#endif
下次这些问题自己可以检验的,就别问了,多动手!
给出下面的例子;
#include
#include
int main()
{char a[5]="look";
char b[7]="lookly";
if(strcmp(a,b)>0)
printf("%s>%s\n",a,b);
else
printf("%s<%s\n",a,b);
return 0;
}