strcmp怎么比较字符串大小,c语言的strcmp函数怎么比较字符串?
strcmp怎么比较字符串大小,c语言的strcmp函数怎么比较字符串?详细介绍
本文目录一览: 字符串比较函数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
用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,函数值为一负整数
c语言中用compstr如何实现比较两个字符串的大小
比较字符串大小的函数为 : strcmp
strcmp(str1, str2) > 0; str1大于 str2;
strcmp(str1, str2) == 0; str1 等于 str2;
strcmp(str1, str2) < 0; str1 小于 str2;
求采纳
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-百度百科
C语言中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)。
【返回值】若参数s1
和s2
字符串相同则返回0。s1
若大于s2
则返回大于0
的值。s1
若小于s2
则返回小于0
的值。
所以比较的是字典序的大小,比如"a"
比
"ASDNZONWAOIDAOWIJDOWADNWO"要大
"aaaab"
比
"aaaaa"
大
长度不影响比较结果,除非两个字符串一个是另一个的子串,那么返回值会被影响
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;
}
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语言中比较两个字符串的大小
一:(这个调用了 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语言中字符串的大小怎么比较啊?
strcmp
原型:extern int strcmp(char *s1,char * s2);
用法:#include
功能:比较字符串s1和s2。
说明:
当s1
<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇 '\0'为止。如:
"abcdefg"和"12",首先比较'a'和'1','a'的ASC码是97,'1'的ASC码是49,所以"abcdefg"> "12",返回值是97-49=48
"abc"和"ABC",首先比较'a'和'A','a'的ASC码是97,'A'的ASC码是65,所以"abc"> "ABC",返回值是97-65=32
"1000"和"2",首先比较'1'和'2','1'的ASC码是49,'2'的ASC码是50,所以"1000"< "2",返回值是49-50=-1
strcmp(str1, str2);
str1>str2 返回1, str1 < str2返回-1,str1 == str2 返回0
从第一个字符开始比较它们ascii的大小
先比第一个字符的内码,第一个字符谁大就谁大,第一个相同就比第二个,以此类推,比如“12”>"100"成立
strcmp 原型:extern int strcmp(char *s1,char * s2); 用法:#include
功能:比较字符串s1和s2。 说明: 当s1
<s2时,返回值
s2时,返回值>0 即:两个字符串自左...
//输入任意一个数字,转换为字符串输出
#include
void
main()
{
int
n
=
0;
char
str[10]={0};
printf("input
a
number:");
scanf("%d",
&n);
sprintf(str,
"%d",
n);
printf("the
string
is:[%s]\n",
str);
}
1、C语言中字符是使用char来定义的,使用关系运算符(>,<,=)即可对字符进行比较。
2、在编译器中定义a、b两个字符型变量,并为其赋值。
3、运行代码后,我们可以得到如图所示结果。1表示条件为真,0表示条件为假。
4、字符串使用char[]来定义,可以使用strcmp()来判断大小,也可以使用关系运算符(>,<,=)判断大小。
5、使用strcmp()对字符串进行比较大小时,需要引入头文件string.h。
6、运行代码后,我们可以得到如图所示结果。:使用strcmp进行判断时,返回结果为0,表示两个字符串相等。返回结果大于0,表示第一个参数字符串大。返回结果小于0,表示第二个参数字符串大。
</s2时,返回值
</s2时,返回值<0