Есть несколько мелких ошибок в вашем коде и предположениях, которые вы, похоже, делаете по этому поводу.
1.Эти два объявления не совпадают
char arr1[10]={'0','1','2','3','4','5','6','7','8','9'};
char arr2[10]="0123456789";
Вторая строка равна этому:
char arr2[10]={'0','1','2','3','4','5','6','7','8','9', 0x00};
... который определяет массив, содержащий 11 элементов.Проверьте неявное нулевое завершение для строковых литералов.
РЕДАКТИРОВАТЬ: Я получил довольно много отрицательных голосов специально для этого пункта.Пожалуйста, смотрите комментарий Lundin ниже, который проясняет проблему.
2.Ваш цикл for выполняет итерации по 11 элементам
for(i=0 ; i<11 ;++i)
Вышеприведенный цикл проходит через i = 0..10, то есть 11 элементов .... но вы только хотелисравнивать первые 10 правильно?
Вы можете изменить свой цикл, чтобы сравнивать только первые десять элементов [for(i = 0; i < 10; ++i)
], и это заставит вашу программу работать так, как вы ожидаете.
Из-за того, что вы предполагаете, я бы порекомендовал прочитать строки в C, индексы массивов и неопределенное поведение.