Вам нужно подумать, что произойдет, если ваши две строки выглядят следующим образом:
s1:this is a string\0|abcdef
s2:this is a string\0|abcdef
good memory <-|-> bad memory
Поскольку вы просто перемещаете указатели, когда их содержимое одинаково, вы можете закончить чтение памяти способом, который не определен.
Лучший способ - создать свой код следующего псевдокода:
def strcmp(s1,s2):
while character at s1 is not '\0':
if character at s1 is not the same as character at s2:
exit while loop
increment s1 and s2
return difference between *s1 and *s2
Это остановится, когда вы достигнете конца первой строки или обнаружите разницу ( включая , если вы достигли конца второй строки перед первой).