Я работаю со строками в C как символьными массивами и пытаюсь обеспечить возможность динамической передачи значений в свои циклы for.
Следующий код работает, без проблем:
for (int i = -6; i < 11; i++) {
int test = OverlapStrength(fragments[1], fragments[2], i, 0);
printf("%d\n", test);
}
На самом деле этот код тоже работает:
for (int i = -strlen(fragments[2]) + 1; i < 11; i++) {
int test = OverlapStrength(fragments[1], fragments[2], i, 0);
printf("%d\n", test);
}
Но по какой-то причине этот код не печатает НИЧЕГО:
for (int i = -strlen(fragments[2]) + 1; i < strlen(fragments[1]); i++) {
int test = OverlapStrength(fragments[1], fragments[2], i, 0);
printf("%d\n", test);
}
Я проверилзначения для -strlen(fragments[2]) + 1
и strlen(fragments[1])
непосредственно перед циклом, и они проверяются на -6 и 11 соответственно.Ясно, что цикл работает, когда я помещаю эти значения непосредственно на их места, но когда я заменяю второе значение вычислениями strlen
, он ломается, и я не могу понять, почему для моей жизни.Справка?
Редактировать
OverlapStrength принимает свои аргументы в качестве констант, поэтому я не могу их изменить, поэтому я почти уверен, что не изменяю фрагменты, так как яидти.Вот объявление метода:
int OverlapStrength(const char one[], const char two[], int startOne, int startTwo)
Содержимое фрагментов не должно быть важным, но это просто строки, которые я пытаюсь собрать обратно из перекрывающихся фрагментов.Я уже проверил, что все мои фрагменты выводятся правильно и что их длины вычисляются правильно, когда это делается вне объявления этого цикла.