strnumcmp的实现

来源:互联网 发布:招聘数据 编辑:程序博客网 时间:2024/06/06 09:06

实现int strnumcmp(char * str1,char * str2);函数,当两个字符串的比较部分不包含数字时,函数功能和strcmp一样。否则比较字符串中的数字大小。例如:

"abc32"<"abc6";

"abcd">"abc9";

"abcd"<"abce";

// strnumcmp.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <ctype.h>#include <string.h>/**实现int strnumcmp(char * str1,char * str2);函数,当两个字符串的比较部分不包含数字时,函数功能和strcmp一样。否则比较字符串中的数字大小。例如:"abc32"<"abc6";"abcd">"abc9";"abcd"<"abce";基本思想:当前位置如果全是是数字,则计数;否则采用strcmp的方法比较**/int strnumcmp(char *str1,char *str2){  int i,j;int len1=strlen(str1);int len2=strlen(str2);int int1;int int2;for(i=0,j=0;i<len1,j<len2;i++,j++){int1=0;int2=0;//当前值不等,且不全是数字,直接采用strcmp的方法if (str1[i]!=str2[j] && !(isdigit(str1[i]) && isdigit(str2[j]))){return str1[i]-str2[j];}//str1遇到数字,则进行迭代while (isdigit(str1[i])){int1=int1*10+str1[i]-'0';i++;}//str2遇到数字,则进行迭代while (isdigit(str2[j])){int2=int2*10+str2[j]-'0';j++;}//比较大小if (int1!=int2){return int1-int2;}}return 0;}/************************************************************************//* 基础的strcmp方法                                                     *//************************************************************************/int strmycmp(char *str1,char *str2){int ret=0;while(!(ret=*str1-*str2))//不为0{str1++;str2++;}return ret;}int main(int argc, char* argv[]){char * str1="abc123";char * str2="56abc12455";int result=strnumcmp(str1,str2);if(result==0)printf("字符串相等。/n");else if(result>0)printf("%s大于%s/n",str1,str2);elseprintf("%s小于%s/n",str1,str2);return 0;}


0 0
原创粉丝点击