我正在将 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)
片段的内容不应该很重要,但它们只是我试图从重叠的片段中拼凑起来的字符串。我已经检查了我的片段是否都正确输出,并且在声明此循环之外完成时,它们的长度是否正确计算。