【发布时间】:2012-01-14 17:35:07
【问题描述】:
我正在使用 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)
片段的内容不应该很重要,但它们只是我试图从重叠的片段中拼凑起来的字符串。我已经检查了我的片段是否都正确输出,并且在声明此循环之外完成时,它们的长度是否正确计算。
【问题讨论】:
-
OverlapStrength是否改变了strlen(fragments[1])的值? -
OverlapStrength 的参数被特别声明为常量,因此我无法更改它们。编辑原始帖子以显示该代码。
标签: c string for-loop c-strings