编一个函数实现strcmp()函数功能
时间: 2023-10-24 14:12:01 浏览: 84
好的,下面是一个简单的strcmp()函数的实现:
```c
int strcmp(const char *s1, const char *s2) {
while (*s1 && (*s1 == *s2)) {
s1++;
s2++;
}
return *(const unsigned char*)s1 - *(const unsigned char*)s2;
}
```
该函数接受两个const char指针作为参数,并返回两个字符串的比较结果。在函数体中,使用了一个while循环来遍历两个字符串,如果两个字符相等则继续遍历,如果不相等则返回它们之间的差值。注意,我们强制将指针转换为const unsigned char,以确保在比较时不会发生符号扩展。
相关问题
编写C++函数,实现strcmp函数功能
在C++中,你可以创建一个名为`my_strcmp`的自定义函数,效仿标准库中的`std::strcmp`函数的功能,比较两个字符串是否相等。`std::strcmp`通常用于C语言,但在C++中也可以作为参考实现。这里是一个简单的例子:
```cpp
#include <string>
#include <cctype> // 包含tolower函数用于忽略大小写
int my_strcmp(const std::string& str1, const std::string& str2) {
int lengthDiff = str1.length() - str2.length();
// 如果长度不同,则直接返回差值
if (lengthDiff != 0)
return lengthDiff;
// 遍历字符串,逐字符对比,忽略大小写
for (size_t i = 0; i < str1.length(); ++i) {
if (tolower(str1[i]) != tolower(str2[i])) { // 使用tolower转换并比较字符
return str1[i] < str2[i] ? -1 : 1; // 返回字符顺序差异
}
}
// 字符串完全相等
return 0;
}
```
这个函数首先检查两个字符串的长度,如果长度不同则直接返回长度之差。然后逐个字符对比,如果找到不匹配的字符,按ASCII码排序返回负数(str1小于str2)、正数(str1大于str2)或零(两者相等)。
函数实现strcmp
strcmp函数是用来比较两个字符串是否相等的函数,其返回值为整型,如果两个字符串相等则返回0,如果第一个字符串小于第二个字符串则返回负数,如果第一个字符串大于第二个字符串则返回正数。下面是一个简单的实现strcmp函数的例子:
```python
def strcmp(str1, str2):
i = 0
while i < len(str1) and i < len(str2):
if str1[i] != str2[i]:
return ord(str1[i]) - ord(str2[i])
i += 1
return len(str1) - len(str2)
```
在这个例子中,我们首先比较两个字符串的每个字符,如果发现不相等的字符,则返回它们的ASCII码之差。如果两个字符串的前缀相等,则返回它们的长度之差。这个实现方法可以处理任意ASCII码的字符串。