请用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的主要内容,如果未能解决你的问题,请参考以下文章

C语言比较两个字符串相等的问题,请人详细讲解

C语言函数strcmp()(比较两个字符串)

字符串的比较和拷贝的函数是啥

一个c语言的问题:怎样比较字符串的大小。。。。请教高手啊。。。。

c语言数字拼接成字符串

strcmp函数怎么用的?