Online Compiler C

#include <stdio.h> int my_strcmp(char a[], char b[]){ int m=0,n=0,sum=0; while(a[m]!='.'&&a[m]!='\0'&&a[m]!='\n'){ sum+=sum; sum=a[m]-b[n]; m++; n++; } if(sum>0){ return 1; }else if(sum==0){ return 0; }return -1; } int main() { char dst[1000]="abc.",src[1000]="abc.",answer=0; answer=my_strcmp(dst,src); printf("%d",answer); return 0; }
这段代码试图实现一个字符串比较函数 `my_strcmp`,但逻辑上有问题。它比较两个字符串时,循环条件检查了 `a[m]` 是否为 `'.'`,这不符合标准字符串比较的规则(应该比较到 `'\0'` 结束)。同时,`sum` 的累加方式也不正确,导致结果不可靠。

- 循环条件中使用了 `a[m]!='.'`,这会让比较在遇到点号时停止,而不是在字符串末尾。标准字符串比较应该只以 `'\0'` 作为结束标志。
- 变量 `sum` 的累加 `sum+=sum` 没有意义,而且每次循环都重新赋值 `sum=a[m]-b[n]`,导致 `sum` 只保留最后一次差值,而不是累计结果。字符串比较通常只需要找到第一个不同字符的差值即可。