请用c语言实现一个带数字比较的字符串比较函数strcmpint
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请用c语言实现一个带数字比较的字符串比较函数strcmpint相关的知识,希望对你有一定的参考价值。
参考技术A #include <stdio.h>#include <ctype.h>
#include <string.h>
int strcmpint(char *s1,char *s2)
int d1;
int d2;
if(strcmp(s1,s2) == 0)
return 0;
while(*s1 && *s2)
if(isdigit(*s1) && isdigit(*s2))
sscanf(s1,"%d",&d1);
sscanf(s2,"%d",&d2);
if(d1 > d2)
return 1;
else if(d1 < d2)
return -1;
while(isdigit(*s1) && isdigit(*s2))
++s1,++s2;
continue;
if(*s1 > *s2)
return 1;
else if(*s1 < *s2)
return -1;
++s1;
++s2;
if(*s1)
return 1;
else
return -1;
int main(int argc,char **argv)
char *s1="hello12world";
char *s2="hello123test";
switch(strcmpint(s1,s2))
case 1:
printf("%s 大于 %s\\n",s1,s2);
break;
case -1:
printf("%s 小于 %s\\n",s1,s2);
break;
case 0:
printf("%s 等于 %s\\n",s1,s2);
return 0;
参考技术B //#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int strcmpint(char *a,char *b)
int i,na,nb;
for(i=0;a[i] || b[i];i++)
if(a[i]>='0' && a[i]<='9' && b[i]>='0' && b[i]<='9')
sscanf(a+i,"%d",&na);
sscanf(b+i,"%d",&nb);
if(na>nb) return 1;
else if(na<nb) return -1;
else if(a[i]>b[i]) return 1;
else if(a[i]<b[i]) return -1;
return 0;
int main(void)
char a[]="abc123def",b[]="abcd12",x;
printf("Type 2 strings...\\n");
scanf("%s%s",a,b);
x=strcmpint(a,b);
printf("%s %c %s\\n",a,x>0 ? '>' : x<0 ? '<' : '=',b);
return 0;
参考技术C //#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int strcmpint(char *a,char *b)
int i,na,nb;
for(i=0;a[i] || b[i];i++)
if(a[i]>='0' && a[i]<='9' && b[i]>='0' && b[i]<='9')
sscanf(a+i,"%d",&na);
sscanf(b+i,"%d",&nb);
if(na>nb) return 1;
else if(na<nb) return -1;
else if(a[i]>b[i]) return 1;
else if(a[i]<b[i]) return -1;
return 0;
int main(void)
char a[]="abc123def",b[]="abcd12",x;
printf("Type 2 strings...\n");
scanf("%s%s",a,b);
x=strcmpint(a,b);
printf("%s %c %s\n",a,x>0 ? '>' : x<0 ? '<' : '=',b);
return 0;
参考链接:
http://zhidao.baidu.com/link?url=xlbhkU71OkL1PTcf-q01qzL7GiuaUfivhg9d6qUmIU7InR2JbstHo1f40M3yVgDbBNYkhvLgCCYt2IG3xJIxfpDA4SM9fUJHOXl6nBENpSG 参考技术D abc123def 怎么会小于 abcd12的,我没看出来
以上是关于请用c语言实现一个带数字比较的字符串比较函数strcmpint的主要内容,如果未能解决你的问题,请参考以下文章