реализация memcmp C - есть логические ошибки с этим?
Я искал реализацию memcmp (), я нашел этот фрагмент кода, но он четко пометил, что с фрагментом кода есть 1 логическая ошибка. Не могли бы вы помочь мне найти логическую ошибку.
По сути, я тестировал этот код на уровне реализации библиотеки mem.mpmp () библиотеки string.h с разными входами, но ожидаемый результат всегда совпадает с библиотечной версией функции.
Вот фрагмент кода:
#include <stdio.h>
#include <string.h>
int memcmp_test(const char *cs, const char *ct, size_t n)
{
size_t i;
for (i = 0; i < n; i++, cs++, ct++)
{
if (*cs < *ct)
{
return -1;
}
else if (*cs > *ct)
{
return 1;
}
else
{
return 0;
}
}
}
int main()
{
int ret_val = 20; //initialize with non-zero value
char *string1 = "china";
char *string2 = "korea";
ret_val = memcmp_test(string1,string2,5);
printf ("ret_val is = %d",ret_val);
getchar();
return 0;
}
Я запустил программу с двумя примерами строк, и программа вернулась бы сразу после сравнения первых символов двух строк. ret_val равен -1 в вышеприведенном случае.
Определение memcmp (), которому должен соответствовать приведенный выше фрагмент кода:
Определение функции библиотеки C: memcmp:
int memcmp (const char * cs, const char * ct, size_t n)
Сравните первые n символов cs с первыми n символами ct.
Вернуть <0, если cs <ct.
Вернуть> 0, если cs> ct.
Вернуть 0, если cs == ct.
Определенно, в ЛОГИЧЕСКОЙ ошибке есть ошибка, не могли бы вы помочь мне ее найти.