zoukankan      html  css  js  c++  java
  • m_strcmp

    strcmp比较两个字符串的大小,strcmp(str1, str2);

    从str1和str2的第一个元素比较直到出现不同,或者遇到''结束。如果str1 > str2 返回正数,str1 < str2返回负数,相等返回零。
    eg:

    str1 str2
    abcde > abcd
    abcde > abcddd
    abcde < abcdef

    自己实现这个函数:

    #include <stdio.h>
    #include <string.h>
    
    int m_strcmp(char *str1, char *str2)
    {
    	int i = 0;
    
    	while(str1[i] != '')
    	{
    		printf("str1 str2%s %s
    ", str1, str2);
    		if(str2[i] != '')
    		{
    			if(str1[i] < str2[i])
    			{
    				return -1;
    			}else if(str1[i] > str2[i])
    			{
    				return 1;
    			}else if(str1[i] = str2[i])
    			{
    				i++;
    				continue;
    			}else
    			{
    				printf("this is a problem!
    ");
    			}
    		}else if(str2[i] == '')
    		{
    			return 1;//str1>str2
    		}else
    		{
    			printf("this is a problem2!
    ");
    		}
    	}
    	if(str2[i] == '')
    	{
    		return 0;
    	}else
    	{	
    		return -1;//str1<str2
    	}
    }
     
    int main ()
    {
       char str1[15];
       char str2[15];
       int ret;
    
       scanf("%s", str1);
       scanf("%s", str2);
       printf("%s %s
    ", str1, str2);
     
       ret = m_strcmp(str1, str2);
     
       if(ret < 0)
       {
          printf("str1 小于 str2
    ");
       }
       else if(ret > 0) 
       {
          printf("str2 小于 str1
    ");
       }
       else 
       {
          printf("str1 等于 str2
    ");
       }
       printf("%d
    ", ret);
       return(0);
    }
    
    

    大佬的优质代码:

    int __cdecl strcmp (
            const char * src,
            const char * dst
            )
    {
            int ret = 0 ;
    
            while((ret = *(unsigned char *)src - *(unsigned char *)dst) == 0 && *dst)
                    ++src, ++dst;
    
            if ( ret < 0 )
                    ret = -1 ;
            else if ( ret > 0 )
                    ret = 1 ;
    
            return( ret );
    }
    
  • 相关阅读:
    C# 杨辉三角 下
    C# 自动走迷宫 下
    算法练习之1数字填充 下
    动态添加控件并获取其值
    两个ListBox的互动
    VS2005常用快捷键
    GridView内嵌DropDownList操作
    GridView格式化短日期
    获得客户端ID
    Access数据库 Update 语句的怪现象
  • 原文地址:https://www.cnblogs.com/fanhua666/p/11459282.html
Copyright © 2011-2022 走看看