私はこのコードを持っているC.でシンプルなステートマシンのexecutorを記述しようとしています:なぜzをインクリメントしないのですか?
while(1) {
strcpy(fsm.state[x][z], lines[i]);
printf("%i %i\n", x, z);
z++; i++;
if(strcmp(lines[i], ".") == 0) x++; z = 0;
if(strcmp(lines[i], "") == 0) break;
}
現在の行は、私はから読んでいたときにZのみリセットする必要がある場合、私は理由を理解していませんlines配列は、xが3行おきに正常にインクリメントされた場合でも、038と等しいです。
は、私はそうのような出力が必要になります。
1 0 \ nは1 1 \ nは1 2 \ nは2 0 \ nは2 1 \ nは2 2 \ nは3 0 \ nは3 1、など。 。
代わりに私が取得:
など1 0 \ nは1 0 \ nは1 0 \ nは2 0 \ nは2 0 \ nは2 0 \ nは3 0 \ nは3 0、 ..
何を変更する必要がありますか?これは愚かな質問かもしれないが、私は本当にここで何が間違っているのか理解していない。
ご協力いただきありがとうございます。
+1それはすなわち、中括弧を使用しない場合、最初の文を条件付きで実行されていることは注目に値しますセミコロンまで、改行ではありません。 – Skilldrick
か、この場合、 ';';の代わりに '、';をつけることができます) – ruslik
ありがとう、それは私が中カッコを使用しなかったためです。私の悪い。 –