只用c语言,不用c++,写一个函数int f(char*s1,char*s2),按字典顺序比较字符串s1和s2的大小,如果sl>s2返回整数,ssl=s2返回0,sl<s2返回负数,要求不能使用strcmp函数。
时间: 2023-08-03 11:04:53 浏览: 81
数据结构-c语言-带main函数-串4-串比较-根据标准库函数strcmp()和定义求串比较函数的两种方法。
可以使用指针进行比较,逐一比较两个字符串的每个字符,直到出现不同的字符或者有一个字符串结束为止。以下是代码实现:
```c
int f(char* s1, char* s2) {
while (*s1 == *s2) {
if (*s1 == '\0') return 0;
s1++;
s2++;
}
return *s1 - *s2;
}
```
在函数中,首先通过 while 循环逐一比较两个字符串的每个字符。如果两个字符相等,则继续向后比较,直到出现不同的字符或者有一个字符串结束为止。如果两个字符串完全相等,则返回 0。
如果出现不同的字符,则比较它们的 ASCII 码值大小。如果 s1 的字符比 s2 的字符大,则返回一个正整数;如果两个字符相等,则继续比较下一个字符;如果 s1 的字符比 s2 的字符小,则返回一个负整数。
注意,函数的参数应该是指向字符串的指针,而不是数组。因为指针可以根据需要移动,而数组的长度是固定的。
阅读全文