只用c语言,不用c++,写一个函数int f(char*s1,char*s2),按字典顺序比较字符串s1和s2的大小,如果sl>s2返回整数,ssl=s2返回0,sl<s2返回负数,要求不能使用strcmp函数。
时间: 2023-08-03 22:04:53 浏览: 68
数据结构-c语言-带main函数-串4-串比较-根据标准库函数strcmp()和定义求串比较函数的两种方法。
可以使用循环来逐个比较字符串中的字符,找到第一个不相同的字符后,比较它们的ASCII码值大小即可。
以下是一个可能的实现:
```c
int f(char *s1, char *s2) {
int i = 0;
while(s1[i] && s2[i]) {
if(s1[i] != s2[i]) {
return s1[i] - s2[i];
}
i++;
}
return s1[i] - s2[i];
}
```
首先定义一个变量i来表示当前比较到字符串的第几个字符。然后使用while循环,只要s1和s2中都还有字符,就继续比较。
如果s1[i]和s2[i]不相等,说明找到了第一个不相同的字符,此时直接返回它们的ASCII码值之差。
如果循环结束后仍然没有找到不相同的字符,说明其中一个字符串已经比较完了(或者两个字符串相等),此时返回它们长度之差。
需要注意的是,在比较时要确保字符串中没有空字符('\0'),否则可能会出现意外的结果。
阅读全文