完善以下程序#include<stdio.h> int strcmp(char *p1,char *p2){ /*********Begin*********/ while(*p1 && *p2 && (*p1 == *p2)) { p1++; p2++; } return (*p2 - *p1); /*********End**********/ } int main() { char a[110],b[110]; scanf("%s%s",a,b); if(strcmp(a,b)>0) printf("%s", a); else printf("%s", b); return 0; }
时间: 2023-07-01 19:27:52 浏览: 189
C语言函数库全面详解
这个程序看起来是比较简单的字符串比较程序,其中使用了自定义的 `strcmp` 函数来比较两个字符串的大小,并输出较大的那个字符串。
然而,这里的 `strcmp` 函数实现并不完美,存在以下问题:
1. 函数名与系统库函数名重复,在使用时可能会引起混淆;
2. 函数返回值的含义与标准库函数 `strcmp` 不同,应该返回两个字符串的比较结果,而不是一个字符的差值;
3. 函数实现中只考虑了两个字符串的长度相同的情况,如果两个字符串长度不同,将会出现错误结果。
因此,我们可以对程序进行如下完善:
1. 修改函数名为 `my_strcmp` 等不与系统库函数名冲突的函数名。
2. 修改函数返回值为两个字符串的比较结果,即当 `p1` 大于 `p2` 时返回一个正数,当 `p1` 等于 `p2` 时返回 0,当 `p1` 小于 `p2` 时返回一个负数。
3. 修改函数实现,考虑两个字符串长度不同的情况,如果到某个字符串的结尾,直接比较两个字符串长度的差值即可。
修改后的程序如下:
阅读全文