C语言怎么比较两个字符串大小?

作者&投稿:革阁 (若有异议请与网页底部的电邮联系)
c语言中比较两个字符串的大小~

在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。 return 1;//s1较大,返回1.}

一:(这个调用了 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]");
}

两个字符串s1和s2,若s1=s2时,返回值为0;若s1不等于s2时,返回它们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14)。如果s1 > s2,则输出正值;如果s1 < s2,则输出负值。
答案:

#include<stdio.h>
#include<string.h>
#define N 30
void main()
{
char s1[N],s2[N];
int i,j=0;
puts("输入字符串s1:");
gets(s1);
puts("输入字符串s2:");
gets(s2);
for(i=0;(s1[i]!='\0')&&(s2[i]!='\0');i++)
{
j=s1[i]-s2[i];
if(j!=0)
break;
}
if((s1[i]=='\0')&&(s2[i]=='\0'))
printf("%d\n",j);
else
printf("%d\n",s1[i]-s2[i]);
}

有函数strcmp可以直接用



字符串大小?
比较的规则是什么 ?
长度? 字典序?

用sizeof()


c语言两个字符串比较大小的问题,不使用strcmp函数
将两个字符串s1,s2比较,如果s1>s2,输出一个正数;s1<s2输出一个负数,s1=s2,输出0。输出的正数或负数的绝对值应是比较的两个字符串的ASCII码的差值。例如‘A'与'C'的ASCII的差值为2,因此输出为‘-2’,这里有一个程序,但是我运行的时候好像结果是错的啊,... 展开 1...

编程实现比较两个字符串的大小
采纳率:24% 来自:芝麻团 擅长: C\/C++ 编程语言 VC++ 汇编语言 其他编程语言 为您推荐: 编程实现复制字符串 编程字符串的复制 编程实现交换两个数字 字符串连接不用strcat 字符串多少个编程 字符串是什么意思 实现两个字符串的连接 拼接字符串函数实现 编程字符串比较 excel编程入门教程 其他...

中文语言中的望和请的区别?
在公文中,上下级之间、领导与被领导者之间的行文(含讲话稿),经常会遇到这两个词。应该怎样准确使用它们呢?首先,下级向上级或领导人递送的“请示”中,必须使用“请”。如“如无不妥,请批复”;“当否,请指示”。其次,上级的下行文,一般用“望”。如“此复,望遵照执行”;“整改报告收悉...

表示说的两个字词语有哪些呢?
表示说的两个字词语有谈论、演讲、说话、谈话、讲话、叙述、陈述、复述、申述、说明、声明、讲明、辩论、议论、讨论、商谈、哈谈、商量、畅谈、商讨。1、谈论,拼音tán lùn 释义:是指以谈话的方法表示对人对事的看法。巴金 《寒夜》二五:人们带笑地谈论战争的消息。2、说话:shuō huà,释义:...

语言两个字的国际音标怎么写?
y214、iаn35。数字标在右上角。

合家与阖家两个词语仅一字之差,有什么区别吗?
要知道,对于大部分的外国人而言,汉语才是这个世界上最难学会的一种语言。汉语中存在一字多义、一字多用和异字同音或者同义的情况,所以很多时候,即便是我们这些以汉语为母语的人,也可能会用错汉字和词汇。比如“阖家”与“合家”这两个词,读起来一样,意思也一样,但是具体什么时候用,则存在比较...

用韩语怎么写语言两个字
中文【语言】韩文【언어】打字【djs dj】———希望对你有帮助

很多人用语言攻击一个人,用什么词形容两个字
众矢之的 [zhòng shǐ zhī dì] 生词本基本释义矢:箭;的:箭靶的中心。众箭所射的靶子。比喻大家攻击的对象。偏正式 出 处清·谭嗣同《报贝元徵》:“今之原祸始音;必以合肥为丛矢之的。”例 句何必和大家拧着干,就不怕自己成为~?

怎样不写错 :疼和痛?怎么区别这两个字?谢谢!
疼:因病、刺激或创伤而起的难受的感觉;痛:疾病、创伤等引起的难受的感觉。两个字音也比较相似。从词典里面的解释和用法看来也没有什么区别。且词语“疼痛”便是一个典型的互义,即两个相同意思的字组成的词。在使用中并没有任何轻重,内外自分。就语言研究而言,两者可能存在的比较明显的区别便是...

工作和生活怎么用两个字去代表?
如果生活用两个字去代表的话,可以用一个忙碌或者是平衡。

普陀区17729659064: c语言中比较两个字符串的大小,应该怎么做? -
叶凯苍苓: 一:(这个调用了 string.h 头函数) #include <stdio.h> #include <string.h>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) {...

普陀区17729659064: C语言编程,输入两个字符串,比较他们的大小并输出比较结果 -
叶凯苍苓: 如果只是问个算法,我可以告诉你,但是如果是你要全部 ,那就不可以了,作业要自己做的啊! 如果你要用户输入2个字符串作比较的话 可以用“ ”来区分字符串1与字符串2 然后把2个字符串存到2个数组里去比 int i=1,j=1; char a[20],b[20] if (c=getchar()!=" ") then { a[i]=c; i++; } else { b[j]=c; j++; } 然后用for循环一个一个比他们的大小就可以了,如果有一个大了就return 大的值,如果遇到一个数组为空了,也return 另外一个字符串就好了. 其它的要你自己想了,如果全告你,那你也还是什么也学不会,算法告你了就可以了.给不给分你自己看着办吧

普陀区17729659064: 在C语言中字符串的大小怎么比较啊? -
叶凯苍苓: strcmp原型:extern int strcmp(char *s1,char * s2);用法:#include <string.h>功能:比较字符串s1和s2.说明:当s1<s2时,返回值<0当s1=s2时,返回值=0当s1>s2时,返回值>0即:两个字符串自左向右逐个字符相比(按ASCII值大小...

普陀区17729659064: C语言怎么比较两个字符串大小? -
叶凯苍苓: 两个字符串s1和s2,若s1=s2时,返回值为0;若s1不等于s2时,返回它们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14).如果s1 > s2,则输出正值;如果s1 < s2,则输出负值...

普陀区17729659064: 在C语言中比较字符串的大小 -
叶凯苍苓: gets函数知道接收换行符或是eof是停止.而你输入两串字符串的时候只是有空格.改正就是输完一个字符串回车一下

普陀区17729659064: 用C语言写一个比较两个字符串大小的程序,字符串大小由键盘输入. 不要使用c已有库函数strcmp这些.若大于输出正数,小于输出负数,等于输出0.输出的正负数为两字符串的ASC||码
叶凯苍苓: int fun2(char *s,char *t) {if(s==0||t==0)return 0; while(*s&&*t&&*s==*t)s++,t++; return *s-*t; } void main() { char s[100],t[100]; printf("输入字符串:"); gets(s); printf("输入字符串:"); gets(t); printf("%d\n",fun2(s,t)); } VC6通过

普陀区17729659064: 编写一个C语言函数,比较两个字符串的大小
叶凯苍苓: #include <stdio.h> int MyStrcmp(char *p1,char *p2) { int i = 0; for(;((p1[i] != '\0') && (p2[i] != '\0'));i++) { if(p1[i] > p2[i]) return 1; else if(p1[i] < p2[i]) return -1; } if((p1[i] == '\0') && (p2[i] == '\0')) return 0; if(p1[i] == '\0') return -1; return 1; } int main() { int ...

普陀区17729659064: 用C语言实现:strcmp(str1,str2)函数,比较两个字符串的大小(不区分大小写) -
叶凯苍苓: unsigned int strcmp(const char *str1, const char *str2) const {while(((*(str1++)==*(str2++))) && *str1 && *str2 ); return (*str1-*str2); }不区分大小写:可以把位于'A'-'Z'之间的字符加上32可变为'a'-'z'之间的字符后再调用上述函数.

普陀区17729659064: C语言如何编一个函数比较两个字符串的大小 -
叶凯苍苓: int h_strcmp(char *s1, char *s2) { int result, i; for (i = 0; *(s1+i) != '\0' && *(s2+i) != '\0'; i++) { if (*(s1+i) > *(s2+i)) return 1; else if (*(s1+i) < *(s2+i)) return -1; else continue; } if (*(s1+i) == '\0' && *(s2+i) == '\0') return 0; else if (*(s1+i) != '\0' && *(s2+i) == '\0') return 1; else return -1; }

普陀区17729659064: c语言中怎么比较字符串的大小………… -
叶凯苍苓: 头文件#include<string.h> 字符串比较函数:strcmp 语法形式: strcmp(str1, str2); /*str1和str2为已定义好的两个字符数组*/ 功能:将str1与str2进行比较,若str1大于str2,则返回正值,若str1与str2相等,则返回0,若str1小于str2,则返回负值.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网