这个函数是用于比较字符串中字符值的大小的、从第一个字符开始比较,对相比较的两个字符串的第一个字符s1、s2;
当s1<s2时,返回值<0
当s1>s2时,返回值>0
,若相等,则继续比较。如果两个字符串相等,则返回值为0
跟字符串的长度无关的就是从两个字符串的头开始比相应位的字符进行对比实际上是比较相应位字符的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';
#include<stringh>
#include<stdioh>
void main()
{
char str1={"abc"},str2={"485afsd"};
if(strcmp(str1,str2)>0) printf("yes");
} 去掉个o就可以了,楼主要多看看编译器的使用方法,是什么错误在下方是有提示的
思路:字符串比较大小即两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。当s1<s2时,返回-1;当s1=s2时,返回 0;当s1>s2时,返回1。
参考代码:
#include <stdioh>int strcmp(char s1,char s2) { int 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; } if(s1[i] != '\0') return 1; if(s2[i] != '\0') return -1; return 0;}int main() { char a[100],b[100]; gets(a); gets(b); if(strcmp(a,b)==1) printf("字符串a>字符串b"); else if(strcmp(a,b)==0) printf("字符串a=字符串b"); else printf("字符串a<字符串b"); return 0;}/运行结果:asdgasdg字符串a=字符串b/
strcmp比较2个以'\0'结束的字符串是否相同的。
你将a[100],b[100]结束后增加一个字符'\0'。
就可以用strcmp(a,b)==0来判断字符串是否相同了。
如:
char a[100],b[100];
int i;
i=0;
while(scanf("%c",&a[i]),a[i] !='x');
a[i] = '\0';
i=0;
while(scanf("%c",&b[i]),b[i] !='x');
b[i] = '\0';
if(strcmp(a,b)==0)
printf("字符串相同");
else
printf("字符串不同");
字符串比较函数是strcmp(str1,str2);拷贝函数是strcpy(str1,str2)。
字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j",而字符串的零位正是它的长度;
如s[0]=10(※上述功能Ansistring没有。),这可以提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。
1、字符串定位函数:InStr,InStrRev,InStrB
2、字符串截取函数:Mid,Right,Left
3、字符串替换函数:Replace
4、字符串分割函数:Split
5、字符串格式化输出:Format
扩展资料:
字符串可以用“”(点)运算符连接。注意这里不能用“+”(加)运算符。更多信息参见字符串运算符。有很多实用函数来改变字符串。
普通函数见字符串函数一节,高级搜索和替换见正则表达式函数(两种风格:Perl 和 POSIX 扩展)。还有 URL 字符串函数,以及加密/解密字符串的函数(mcrypt 和 mhash)。最后,如果还是找不到想要的函数,参见字符类型函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)