strcmp()的源码

基于opencv-ANN的水果识别模型训练 本文通过opencv-ann-mlp训练模型,实现对五种水果进行分类识别。本文详细介绍该项目的各个过程,包括数据准备、预处理、样本读取、训练数据集制作、训练标签制作、模型参数设置、模型训练,模型测试验证等,总结该过程需要注意的事项。 阅读详情

int   strcmp(const   char   *s1,   const   char*s2)  
  {  
      char*   p1;  
      char*   p2;  
      p1=s1;  
      p2=s2;  
      while((*p1)&&(*p2))  
      {  
          if(*p1==*p2)  
          {  
              p1++;p2++;  
          }else{  
              return   (*p1-*p2);  
          }  
      }  
      return   (*p1-*p2);  
  }   
   

int   strcmp(const   char   *s1,   const   char*s2)  
  {  
      for(;*s1++==*s2++;)  
      if   (*s1=='/0')  
      break;  
      return   (*s1-*s2);  
  }   
 

以下为strcmp.asm   的内容:  
                  page         ,132  
                  title       strcmp.asm   -   compare   two   strings  
  ;***  
  ;strcmp.asm   -   routine   to   compare   two   strings   (for   equal,   less,   or   greater)  
  ;  
  ;               Copyright   (c)   1985-1997,   Microsoft   Corporation.   All   rights   reserved.  
  ;  
  ;Purpose:  
  ;               STRCMP   compares   two   strings   and   returns   an   integer  
  ;               to   indicate   whether   the   first   is   less   than   the   second,   the   two   are  
  ;               equal,   or   whether   the   first   is   greater   than   the   second,   respectively.  
  ;               Comparison   is   done   byte   by   byte   on   an   UNSIGNED   basis,   which   is   to  
  ;               say   that   Null   (0)   is   less   than   any   other   character   (1-255).  
  ;  
  ;*******************************************************************************  
   
                  .xlist  
                  include   cruntime.inc  
                  .list  
   
  page  
  ;***  
  ;strcmp   -   compare   two   strings,   returning   less   than,   equal   to,   or   greater   than  
  ;  
  ;Purpose:  
  ;               Compares   two   string,   determining   their   lexical   order.     Unsigned  
  ;               comparison   is   used.  
  ;  
  ;               Algorithm:  
  ;                     int   strcmp   (   src   ,   dst   )  
  ;                                     unsigned   char   *src;  
  ;                                     unsigned   char   *dst;  
  ;                     {  
  ;                                     int   ret   =   0   ;  
  ;  
  ;                                     while(   !   (ret   =   *src   -   *dst)   &&   *dst)  
  ;                                                     ++src,   ++dst;  
  ;  
  ;                                     if   (   ret   <   0   )  
  ;                                                     ret   =   -1   ;  
  ;                                     else   if   (   ret   >   0   )  
  ;                                                     ret   =   1   ;  
  ;  
  ;                                     return(   ret   );  
  ;                     }  
  ;  
  ;Entry:  
  ;               const   char   *   src   -   string   for   left-hand   side   of   comparison  
  ;               const   char   *   dst   -   string   for   right-hand   side   of   comparison  
  ;  
  ;Exit:  
  ;               AX   <   0,   0,   or   >0,   indicating   whether   the   first   string   is  
  ;               Less   than,   Equal   to,   or   Greater   than   the   second   string.  
  ;  
  ;Uses:  
  ;               CX,   DX  
  ;  
  ;Exceptions:  
  ;  
  ;*******************************************************************************  
   
                  CODESEG  
   
                  public     strcmp  
  strcmp     proc  
   
                  .FPO         (   0,   2,   0,   0,   0,   0   )  
   
                  mov           edx,[esp   +   4]       ;   edx   =   src  
                  mov           ecx,[esp   +   8]       ;   ecx   =   dst  
   
                  test         edx,3  
                  jnz           short   dopartial  
   
                  align       4  
  dodwords:  
                  mov           eax,[edx]  
   
                  cmp           al,[ecx]  
                  jne           short   donene  
                  or             al,al  
                  jz             short   doneeq  
                  cmp           ah,[ecx   +   1]  
                  jne           short   donene  
                  or             ah,ah  
                  jz             short   doneeq  
   
                  shr           eax,16  
   
                  cmp           al,[ecx   +   2]  
                  jne           short   donene  
                  or             al,al  
                  jz             short   doneeq  
                  cmp           ah,[ecx   +   3]  
                  jne           short   donene  
                  add           ecx,4  
                  add           edx,4  
                  or             ah,ah  
                  jnz           short   dodwords  
   
                  align       4  
  doneeq:  
                  xor           eax,eax  
                  ret  
   
                  align       4  
  donene:  
                  ;   The   instructions   below   should   place   -1   in   eax   if   src   <   dst,  
                  ;   and   1   in   eax   if   src   >   dst.  
   
                  sbb           eax,eax  
                  sal           eax,1  
                  inc           eax  
                  ret  
   
                  align       4  
  dopartial:  
                  test         edx,1  
                  jz             short   doword  
   
                  mov           al,[edx]  
                  inc           edx  
                  cmp           al,[ecx]  
                  jne           short   donene  
                  inc           ecx  
                  or             al,al  
                  jz             short   doneeq  
   
                  test         edx,2  
                  jz             short   dodwords  
   
   
                  align       4  
  doword:  
                  mov           ax,[edx]  
                  add           edx,2  
                  cmp           al,[ecx]  
                  jne           short   donene  
                  or             al,al  
                  jz             short   doneeq  
                  cmp           ah,[ecx   +   1]  
                  jne           short   donene  
                  or             ah,ah  
                  jz             short   doneeq  
                  add           ecx,2  
                  jmp           short   dodwords  
   
  strcmp     endp  
   
                  end  
  其实在C:/Program   Files/Microsoft   Visual   Studio/VC98/CRT/SRC目录下有库函数的源代码。

【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试 本文通过15个实战案例,系统讲解VSCode进行Python开发的环境配置、编码技巧、调试方法及性能优化,帮助初学者快速构建专业开发环境。 阅读详情

相关推荐

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

未找到:strcat.asm,vs调试报错

vs弹出一个文件查询框,说明未找到strcat.asm 在google上查找了一些问题点,最后还是找到了解决方式 strcpy()里有2个参数,需要我写入,在此,我们需要了解strcpy()函数得使用方法,地址(http://www.runoob.com/cprogramming/c-function-strcpy.html) char *strcpy(char *dest, const ...

qq_40102556的博客 4035

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8352

strcmp源码分析

微软源码: int strcmp(const char* str1, const char* str2) { int ret = 0; while(!(ret=*(unsigned char*)str1-*(unsigned char*)str2) && *str1) { str1++; str2++ } if (ret < 0) { return -1; } else if (ret > 0) { return 1; } ret

1383

ULN2003驱动28BYJ-48步进电机详解(附:51 32代码讲解)

本文介绍了28BYJ-48步进电机的驱动原理以及注意事项,并展示了极简 32 51驱动代码

qq_41818650的博客 1万+

python-pptx库中文文档及使用样例

个人使用样例及部分翻译自官方文档,并详细介绍chart的使用

4万+

c语言库函数strcmp源码实现

#include <string.h> #undef strcmp #ifndef STRCMP #define STRCMP strcmp #endif int STRCMP (const char *p1, const char *p2) { const unsigned char *s1 = (const unsigned char *) p1; ...

weixin_43476040的博客 5656

爬虫实战:拆解WASM加密参数,破局2026电商动态接口反爬(实测某头部电商可用)

sign和wasm_token,而且每次请求这两个参数都在动态变化。用常规的参数拼接、MD5加密尝试还原,结果全是403;反编译前端JS,发现核心加密逻辑被打包成了.wasm,把关键参数加密、签名逻辑藏在二进制模块里,让爬虫无法直接逆向JS拿到加密规则。前后折腾了5天,从WASM文件解析、JS与WASM交互逻辑拆解,到本地还原加密参数、实战验证,踩了无数坑(比如WASM版本不兼容、内存数据读取失败、加密依赖环境缺失),最终成功还原了加密流程,稳定爬取商品详情、价格、销量等核心数据,连续运行72小时无封禁。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1913

strcmp () strcat() strcpy()源码分析学习

这三个库函数都熟悉用法,但是源码还没有读过,网上找了源码学习一下 来源:https://blog.csdn.net/wangningyu/article/details/4662891 1 /************************************************************************ 2 3 *char *strc...

weixin_30613343的博客 101

JAVA:Spring Boot 集成 Forest 优雅的 HTTP 客户端

Forest是一个优雅的Java HTTP客户端框架,通过注解式声明简化HTTP接口调用。它支持多HTTP客户端、自动参数绑定、序列化、重试机制和拦截器等功能。本文演示了如何在Spring Boot中集成Forest,包括配置、接口定义和调用示例,还展示了POST请求、文件上传等常见场景。相比传统HTTP客户端,Forest具有声明简洁、功能完善的特点,特别适合微服务调用和第三方API对接,能显著提升开发效率和代码可维护性。

木头 427

【无人机路径规划】基于强化学习实现多无人机路径规划

【无人机路径规划】基于强化学习实现多无人机路径规划

k8291121的博客 1656

字符处理strlen()、strcmp()、strstr()源码及改编

int strcmp(const char* str1,const char *str2) strcmp函数用来比较字符串的,strcmp函数是根据ASCII码来比较两个字符串的。若两个字符串完全相等,则返回0;若第一个字符串大于第二个字符串,则返回大于0的数值;若第一个字符串小于第二个字符串,则返回小于0的数值。 传说中的源码:(看看原理即可) int __cdecl strcmp (const...

weixin_42271802的博客 503

飞行机械臂设计

其后对飞行机械臂系统的机 理模型和基于 ADAMS 的物理模型进行了控制系统的搭建,对于机理模 型,设计了三个输入通道,分别是俯仰力矩,翻滚力矩与偏航力矩,控 制量为翻滚角,俯仰角,偏航角。四旋翼无人机自身具有独特的优势,在无人机上增加机械臂,整个 机体系统相当于一架空中行动自如的空中机器人,可以适应更多的应用场合,能够实现空中抓取,运输载荷,巡航监视等任务。的函数模块如图 4-8 所示,可见输入为 U1,U2,U3,U4,分别对应总力矩,俯仰力矩,翻滚力矩,偏航力矩,控制 量为俯仰角,翻滚角,偏航角。

coldmood77的博客 2917

strcmp()函数分析,从源码入手,简单易懂

int __cdecl strcmp (const char * src, const char * dst)//传入两个字符串的地址 { int ret = 0 ;//用来记录字符串相同位的字符相减的差值 while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) //进行强制转化的原因是因为有0~255个ASCII码,而char默认有符号型,即范围为-128~127,因此要进行..

weixin_56216857的博客 670

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言中strlen(),strcmp(),strcat()的源码实现

strlen(),strcmp,strcat

随便记点东西 3245

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ctf web题 前女友

我们直接看题,看到这篇文章我就以为这就是个段子 这篇文章的最后提到php这就给我们了一点提示,这个网页是不是php写的呢,我们在url上加上index.php点击回车,和原网页一样看来我们的猜测没有错,到这里我们还是不知道怎么做,打开源码看看 发现这里有一个链接,我们点击进去看看 这里的传输方式是GET我们做的就是给v1、v2、v3赋值,让它满足这个代码的要求,让它最后输入flag这里用到了1.i...

西部壮仔的博客 945

【CTF】BugKu-前女友

我们是不知道$ flag 的值的,题目要求strcmp判断的接受的值和$flag必需相等,strcmp传入的期望类型是字符串类型,如果传入的是个数组会怎么样呢,我们传入 v3[]=xxx 可以绕过 是因为函数接受到了不符合的类型,将发生错误,但是还是判断其相等。可以使用 加密后是 0e 的字符串绕过:v1=s1885207154a&v2=s1091221200a,相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等。

lga0325的博客 805

BUUCTF---[极客大挑战 2019]BuyFlag1

7.抓包之后Cookie这里显示用户为0,想到刚刚第一个提示我们必须是哪哪的学生,可能和这个用户有关,接下来,把0改为1,修改完之后发现我们的身份和密码是正确的。5.接下来利用工具hackbar,涉及到弱类型比较,只要保证password的前三个数字和404一样,就可以,但是不能全是数字。8.试着把money也作为一个参数传值,输入正确的值之后提示我们输入的数值长度太大了,试着修改小了,发现也不行。4.第一个提示告诉我们,如果想要买flag的话我们必须是来自cuit的学生并且要输入正确的密码。

2201_75556700的博客 865

baby_flash-222 简单的flash 的文件分析

这个题 我好早之前都做过 23333 应该当时 感觉太难了 然后就没有做把 参考链接 https://www.xctf.org.cn/library/details/e0d90ad9d0609320fd6743706135a80913d27b8d/ 然后现在仔细看看这个题 也不算太难 我们一步一步的分析 其实这个东西一目了然我们看看有什么值得期待的函数 然后我发现了F_st...

qq_41071646的博客 488

Linux下安装Wireshark

Linux下安装Wireshark wireshark依赖于libpcap,所以如果系统中未安装libpcap,也要将其一并安装 一、下载源码 源码文件 wireshark-x.x.x.tar.gz wireshark安装源文件 libpcap-x.x.x.tar.gz libpcap安装源文件...

weixin_30580341的博客 131

strcmp 源码

nt strcmp ( const char* src, const char* dst ) 用法:#include 功能:STRCMP compares two strings and returns an integer to indicate whether the first is less than the second, the two are equal, or whe

甘为码农 1444

C++的strcmp

strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。 特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。 源码1 int strcmp(const

sinat_31608641的博客 1万+

自己动手写字符串比较函数strcmp()

最近用到了字符串比较的函数,用到strcmp函数。除了知道怎么用之外,我觉得有必要把它的源码搞一搞。 搜到网上流传的strcmp函数的源码是如下: int strcmp (const char * src, const char * dst) { int ret = 0 ; while( ! (ret = *(unsigned char *)src - *(u

fjqcyq2的专栏 1701

strcmp()函数的深入剖析

strcmp的深入剖析

oba没有马 5219
上一篇: 出现频率最高的笔试题strcpy写法
下一篇: U-BOOT程序的运行机制
menuconfig
博客等级 码龄19年 713粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值