Я пытаюсь написать простую государственную машину исполнителем в С. У меня есть этот код:Почему бы не увеличивать 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 остается равным 0, даже если x успешно увеличивает каждую третью строку.
мне нужен выходной сигнал следующим образом:
1 0 \ п 1 1 \ п 1 2 \ п 2 0 \ п 2 1 \ п 2 2 \ п 3 0 \ п 3 1, и т.д .. .
Вместо этого я получаю:
1 0 \ п 1 0 \ п 1 0 \ п 2 0 \ п 2 0 \ п 2 0 \ п 3 0 \ п 3 0 и т.д. ..
Что мне нужно изменить? Это может быть глупый вопрос, но я действительно не понимаю, что здесь не так.
Благодарим вас за помощь.
+1 Стоит отметить, что, когда не с помощью фигурных скобок, только первое утверждение условно выполняется, т.е.до точки с запятой, а не разрыва строки. – Skilldrick 2010-12-02 23:37:34
или, в этом случае, вы можете поместить `,` вместо `;`;; – ruslik 2010-12-02 23:38:27