C语言字符串的比较
比较字符可以直接使用==比较操作符,如:
char c1='a',c2='b';
if(c1==c2) printf("%c is same as %c.",c1,c2);
else printf("%c is different to %c",c1,c2);
若是字符串,则需要使用字符串函数了,strcmp
char s1[]="abc",s2[]="xyz";
if(strcmp(s1,s2)==0) printf("%s is same as %s.",s1,s2);
也可以忽略大小写来比较,使用函数stricmp 中间的i意思是ignore case sensitive
还可以指定长度比较,strncmp,如:
char s1[]="abc",s2[]="abcdefg";
if(strncmp(s1,s2,3)==0) printf("first 3 characters are same");
若不是从开头位置开始比较,如:
char s1[]="abc",s2[]="xyzabc"
if(strncmp(s1,&s2[3],3)==0) 就是比较s1和s2的第3个字符开始的内容
(1)strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值.
(2)比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不同字符,所遇第一对不同字符的大小关系就确定了两个字符串的大小关系,如果未遇到不同字符而某个字符串首先结束,那么这个字符串是较小的,否则两个字符串相等。
扩展资料:
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。
两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。
在某些语言中它们可作为基本类型获得,在另一些语言中做为复合类型获得。多数高级语言的语法允许通常用某种方式引用起来的字符串来表示字符串数据类型的实例;这种元字符串叫做“文本”或“字符串文本”。
尽管形式字符串可以有任意(但有限)的长度,实际语言的字符串的长度经常被限制到一个人工极大值。一般的说,有两种类型的字符串数据类型: “定长字符串”,它有固定的极大长度并且不管是否达到了这个极大值都使用同样数量的内存,和“变长字符串”,它的长度不是专断固定的并且依赖于实际的大小使用可变数量的内存。
参考资料:百度百科——字符串
c语言中有专门的库函数对字符串进行比较,函数为strcmp(a,b)包含在string.h头文件中。(a,b为字符型数组或两个字符串常量)。
1,比较到e的时候发现前者确实比后者小,所以是对的,逻辑值就是1
C语言:高手们指教一下,c语言里字符串怎么比较大小??是不是比如说,字母...
不是,字符串的比较是一个字符一个字符进行比较的,直到遇到第一个不相同的字符。因为c大于b,故"china">"beijing".
C语言3个字符串比较大小
C语言3个字符串比较大小 我来答 首页 用户 认证用户 视频作者 帮帮团 认证团队 合伙人 企业 媒体 政府 其他组织 商城 法律 手机答题 我的 C语言3个字符串比较大小 我来答 1个回答 #热议# 哪些癌症可能会遗传给下一代?
C语言怎么比较两个字符串大小?
两个字符串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...
C语言中字串ABC大于A吗?为什么?
对的, C语言中字符串"ABC"大于"A"。字符串大小比较,从最左一个字符开始比,ASCII 编码值较大者为大。如果第一个字符一样大,那么比第二个。如果第二个字符一样大,那么比第三个。如此继续。一旦一个字符大小不一样,“比赛”结束,以这个字符输赢为成绩。如果一直比较到字符串结束符 '\\0' ...
c语言为啥打印的字符串一样,strcmp比较起来却不一样?
在 C 语言中,字符串是以 NULL 字符('\\0') 结尾的字符数组。当我们使用 printf 函数打印一个字符串时,它会一直打印到遇到 NULL 字符为止,而在 strcmp 函数比较两个字符串时,它会一直比较到遇到 NULL 字符或两个字符串不相等的字符为止。因此,当两个字符串打印出来看起来一样,但比较结果却不...
c语言中比较字符串的strcmp函数是怎么比较大小的?
从左到右,依次比较字母的ASCII码的大小,遇到不同字符或'\\0'结束。基本形式:strcmp(str1,str2)str1=str2时,返回零;str1<str2时,返回负数;str1>str2时,返回正数。比如Apple和Banana比较,先比较第一个字母A和B,A的ASCII码是65,B的是66,所以Apple<Banana。compare和computer比较,前4个...
c语言只能用strcmp比较字符串相等吗,还是也可以用==号比较字符串...
只能用strcmp函数,当然了也可以一个个的比较,就是先看长度是否相等,如果长度相等再比较字符串中的每一个字符是否一样,不能用==直接比较、
C语言——n个字符串比较大小
n个字符串要比较的话,只需要把n个字符串排序就可以了。两个字符串两两比较可以使用库函数的strcmp(char *a,char *b)函数比较。n个的话使用上述方法排序后就可以比较出n个字符串的大小了。排序方法如下 void sort(char *strings[],int n){ char *temp;for(int i=0;i<n;i++)for(int j=...
C语言如何比较一个字符串的前几位
字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strncmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,直到字符结束标志'\\0',若差值不为0,则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。注意...
字符串大小比较
如果单纯比较长度,直接调用类似于strlen()之类的函数就可以,加以比较即可.如果比较字符串的大小,则比较的是字符的ASCII编码的大小.你搜索一下ASCII码表就可以得知每一个ASCII字符的大小. 参考http:\/\/www.wpyz.net\/noip\/11-1.asp 在比较时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一...
咎促善存: 那-97只不过是一个随机数,我的机子上运行就不是-97,因为如果两个字符串相同,就会接着比较字符串后面的数,直到遇到两个不相等的数为止,最后得到的就是那两个数的差了; 所以必须对比较的个数进行限制,我帮你改聊一下 #include ...
科尔沁右翼中旗13692065709: C语言字符串比较 - ?
咎促善存: strcmp(str1,str2)函数是比较两个字符串的函数: 设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1>str2,则返回正数; 若str1例如: 该函数的原型声明: extern int strcmp(const char *s1,const char *s2); 那么,strcmp函数的声明规...
科尔沁右翼中旗13692065709: c语言字符串比较的代码 - ?
咎促善存: c语言字符串比较用 strcmp() 或 strncmp() 如果用unsigned char 变量,则可用整型量大于等于小于比较.文件比较程序不用自编.unix,linux 用命令 diff, 比较两文件的不同,比较方法,输出内容等要求在命令行中可设.DOS (windows/console) 用命令 COMP 比较两文件或多个文件的不同.与unix,linux 的 diff 大同小异.linux是源码公开的,有兴趣把diff程序下载回来看,我没有看过源码,估计应当是用C写的.diff用法见unix,linux 的man page COMP用法见 HELP
科尔沁右翼中旗13692065709: 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 另外一个字符串就好了. 其它的要你自己想了,如果全告你,那你也还是什么也学不会,算法告你了就可以了.给不给分你自己看着办吧
科尔沁右翼中旗13692065709: 字符串比较 C语言 - ?
咎促善存: 声明为 char *P[],在声明里表示P是指针数组.语句里 *P[i] 外型与声明里相似,但意义不同, 语句里表示是指向的char 值. char *P[] 动态分配地址后可以看成 char p[行数][列数]; 语句里 不带星号的 P[i] 才是 字符串,它相当 p[i行]之所以产生疑问,是因为 C语言里 形式逻辑 不成立.同一张面孔(出现在声明和出现在语句)却是不同的人.
科尔沁右翼中旗13692065709: 在C语言中字符串的大小怎么比较啊? - ?
咎促善存: strcmp原型:extern int strcmp(char *s1,char * s2);用法:#include <string.h>功能:比较字符串s1和s2.说明:当s1<s2时,返回值<0当s1=s2时,返回值=0当s1>s2时,返回值>0即:两个字符串自左向右逐个字符相比(按ASCII值大小...
科尔沁右翼中旗13692065709: C语言中如何合理的比较字符串 - ?
咎促善存: #include int main() { char input[80]; char check[80]; int i=0; printf("输入一个字符串,当有相同字符串输入时,程序将会退出:\n"); gets(input); printf("我将会输出你输入的字符串,直到你输入了最开始的字符串.\n"); while (strcmp(check,input)) { printf("%s\n", input); gets(check);} printf("程序退出"); return 0; }
科尔沁右翼中旗13692065709: 编程问题——字符串比较在C语言中,有一个strcmp函数,其功能是比较两个字符串s1和s2.如果s1 s2,则返回一个正数.请编写一个你自己的字符串比较函... - ?
咎促善存:[答案] int my_strcmp(char *s1,char *s2) { int i,j; for(i=0;j=0;*(s1+i)I='\0'&&*(s2+j)!='\0';i++,j++) { if(*(s1+i)>(s2+j)) return 1; else if(*(s1+i)>(s2+j)) return -1; } if(*(str+i)=='\0'&&*(str+j)=='\0') return 0; else if(*(str+i)=='\0') return -1; else reurn 1; }
科尔沁右翼中旗13692065709: c语言:用自定义函数实现字符串比较! - ?
咎促善存: int cmp_of_str(char *s1, char *s2) {while( (*s1 != '\0') && (*s1 == *s2) ) //若果字符串没到串尾且字符相等,则继续比较{s1++;s2++;}return *s1 - *s2; //等于时返回0,大于返回正差值,小于返回负差值 }
科尔沁右翼中旗13692065709: 在C语言中比较字符串的大小 - ?
咎促善存: gets函数知道接收换行符或是eof是停止.而你输入两串字符串的时候只是有空格.改正就是输完一个字符串回车一下