私は 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);
}
ループの直前と両方の値をチェックしたところ、それぞれ -6 と 11 にチェックアウトされまし-strlen(fragments[2]) + 1
た。strlen(fragments[1])
これらの値を直接その場所に配置するとループが機能することは明らかですが、2番目の値をstrlen
計算に置き換えるとループが壊れ、私の人生の理由を理解できません. ヘルプ?
編集
OverlapStrength はその引数を定数として受け取るため、それらを変更することはできません。したがって、途中でフラグメントを変更していないことは確かです。メソッド宣言は次のとおりです。
int OverlapStrength(const char one[], const char two[], int startOne, int startTwo)
フラグメントの内容は重要ではありませんが、重複するフラグメントからつなぎ合わせようとしている単なる文字列です。フラグメントがすべて適切に出力され、このループの宣言以外でフラグメントの長さが適切に計算されることを確認しました。