我正在使用C中的字符串作为字符数组,我试图确保我可以动态地将值传递给我的for循环。C For Loop不工作?
下面的代码工作,没有问题:
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);
}
我已在第th之前检查了-strlen(fragments[2]) + 1
和strlen(fragments[1])
的值e循环,他们分别检查到-6和11。很明显,当我将这些值直接放置到他们的位置时,循环起作用,但是当我用strlen
计算替换第二个值时,循环会中断,我无法弄清楚为什么在我的生活中。帮帮我?
编辑
OverlapStrength接受它的参数为常数,所以我不能改变他们,所以我敢肯定,我不会改变的片段,我去。这里的方法声明:
int OverlapStrength(const char one[], const char two[], int startOne, int startTwo)
片段的内容不应该是很重要的,但他们只是说我试图从重叠的片段拼凑回字符串。我已经检查过我的碎片全部正常出来,并且在声明这个循环之外完成了它们的长度计算。
不'OverlapStrength'改变'的strlen(片段[1])'的值? – 2012-01-14 17:37:50
OverlapStrength的参数被特别声明为常量,所以我无法更改它们。编辑原始帖子以显示该代码。 – Chiubaka 2012-01-14 17:43:27