При форсировании нулевого терминатора в s1
возникла ошибка, равная единице, это:
s1[1001] = '\0';
запускается после конца s1
, должно быть:
s1[1000] = '\0';
Когда вы объявляете массив в C как char s1[X];
, X
- это количество элементов в массиве, а поскольку массивы C индексируются, начиная с нуля, последний элемент - s1[X-1]
.
Это может быть случайным изменением значения result
между проверкой printf
и result == EOF
.