Я пытаюсь написать простой исполнитель конечного автомата на C. У меня есть этот код:
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 , равна ".", Что происходит при каждом третьем появлении в моем тестовом сценарии z остается равным 0, даже если x успешно увеличивается на каждую третью строку.
Мне нужен вывод примерно так:
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 и т. Д ...
Что я должен изменить? Это может быть глупый вопрос, но я действительно не понимаю, что здесь не так.
Спасибо за вашу помощь.