用strcmp函数比较两个字符串,结果不正确啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用strcmp函数比较两个字符串,结果不正确啊相关的知识,希望对你有一定的参考价值。
#include <stdio.h>#include <string.h>main() char a[]='a','b','c'; char b[]='a','b','c'; int c=strcmp(a,b); printf("%d\n",c); getch();
两个字符串数组完全一样,按照strcmp函数应该输出0但是输出-1,用wintc编译输出-47,得不到正确结果。发现string.h中的函数不太靠谱啊,以前用过其中的isapha、isdigit等函数统计各种字符,发现函数的返回值根本不像描述的那样。
现在你把数组a和b传入,因为前三个字符都相等,会越界继续比较的。
如果你想比较两个字符串,字符串是要用‘\0’结束的。
如果你只想比较前n个,可以使用strncmp,strncmp(a,b,3); 参考技术A 你这是在比较字符数组了吧 不是在比较字符串了
char a[] = "abc";
char b[] = "abc";应该这么定义
你之前定义的是
char a[]='a','b','c'; //char a[3] 是可以的 a[2] = 'c'
char b[]='a','b','c';// char a[4]也是可以的 a[3] = '\0'
不一样的 参考技术B 因为你没有加字符串的结尾标志'\0',所以才会出错。
char a[]='a','b','c','\0';
char b[]='a','b','c','\0' 参考技术C 字符串你后面还必须要加char a[]='a','b','c','\0’;
char b[]='a','b','c','\0' 参考技术D 你可以把字符串的初始化改成这样:
char a[]="abc";
char b[]="abc";
那个getch();可以不要
c语言中strcmp的用法
strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值。
比较两个字符串的算法是:逐个比较两个串中对应的字符,字符大小按照ASCII码值确定,从左向右比较,如果遇到不同字符,所遇第一对不同字符的大小关系就确定了两个字符串的大小关系,如果未遇到不同字符而某个字符串首先结束,那么这个字符串是较小的,否则两个字符串相等。
扩展资料:
C语言主要有以下特点:
1、C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。具体应用比如我是学硬件的,单片机以及嵌入式系统都可以用C来开发。
2、C是结构式语言结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。
C 语言是以函数形式提供给用户的, 这些函数可方便的调用, 并具有多种循环、条件语句控制程序流向, 从而使程序完全结构化。
3、C语言功能齐全C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。
而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的编游戏,编3D游戏,做数据库,做联众世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。
参考技术A int strcmp(char *str1, char *str2);比较字符串str1和str2是否相同。如果相同则返回0;
如果不同,在不同的字符处如果str1的字符大于str2的字符,则返回1,否则返回-1
比如:
char a[]="abcd";
char *b="abcd";
char *d="abcde";
int d=strcmp(a,b); //那么d的值是0
d=strcmp(b,d); //d的值是-1 因为 '\0' 比'e' 小
d=strcmp(d,b); //d的值是1,因为 'e' 比'\0'大 参考技术B 把字符看成ASII的值 , 和数字比较大小一般,
if( strcmp(A,B) > 0 ) 串A > 串B
if( strcmp(A,B) == 0 ) 相同的串
if(strcmp(A,B) < 0 ) 串A < 串B 参考技术C 把字符看成ASII的值 , 和数字比较大小一般, if( strcmp(A,B) > 0 ) 串A > 串B if( strcmp(A,B) == 0 ) 相同的串 if(strcmp(A,B) < 0 ) 串A < 串B
以上是关于用strcmp函数比较两个字符串,结果不正确啊的主要内容,如果未能解决你的问题,请参考以下文章