我需要自己制作一个strcmp函数,使用指针操作。以下是我的代码:
int mystrcmp(const char *str1, const char *str2) {
while ('\0' != *str1 && *str1 == *str2) {
str1 += 1;
str2++;
}
int result1 = (uint8_t)(*str2) - (uint8_t)(*str1); // I need (uint8_t) to use it with Russian symbols.
return result1;
}
但是我的导师告诉我,我的代码中有一些小错误。我花了很多时间进行测试,但是无法找到它。
str1 += 1
而不是str2++
?同时,你没有检查str2
是否比str1
短。 - Eli Sadoffstr1++
还是str1 += 1
? - Weather Vaneuint8_t
强制转换没问题;它将可能带符号的char
值强制转换为正的uint8_t
值,然后在减法运算之前提升为int
(正常类型提升)。但如果str1
中不同的字符是'a'
,而str2
中是'b'
,则应该返回负值,但你会返回正值。 - Jonathan Leffler