Я пытаюсь создать программу, которая создает dfa на основе пользовательского ввода. Каждый узел и переход должны быть структурой, а dfa - также структурой. Структура dfa содержит массив структур узлов и связанный список структур переходов.
Вот что у меня есть:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_STATES 25
#define TRUE 1
#define FALSE 0
#define MAXCHAR 256
/* struct for a state of the DFA */
typedef struct state {
char *id;
int isInitial;
int isFinal;
} STATE_T;
/* struct for a transition of the DFA*/
typedef struct transition {
STATE_T *startState;
char condition;
STATE_T *endState;
struct transistion *next;
} TRANSITION_T;
/* struct for the DFA */
typedef struct automaton {
STATE_T state[MAX_STATES];
TRANSITION_T *transition;
} AUTOMATON_T;
/* main function reads initial user inputs to build dfa */
int main() {
AUTOMATON_T dfa;
STATE_T stateA;
TRANSITION_T *trans;
Первая строка текстового файла - это запятые узлы / состояния, например: «a, b, c». Но когда я получаю назначение каждого узла в качестве идентификатора состояния в структуру dfa, конечному состоянию присваивается идентификатор для каждого отдельного состояния. Оператор for в следующем коде печатает 0c 1c 2c, где я ожидал бы 0a 1b 2c.
FILE *fp = fopen(fileName, "r");
while (fgets(useIn, MAXCHAR, fp)) {
if (lineNum == 0) {
i = 0;
char *token = strtok(useIn, ",");
while (token != NULL) {
strcpy(stateId, token);
stateA.id = stateId;
dfa.state[i] = stateA;
i++;
token = strtok(NULL, ",");
}
stateAmt = i;
for (i = 0; i < stateAmt; i++) {
printf("%d", i);
printf("%s", dfa.state[i].id);
}
}
fclose(fp);
return 0;
}
С чего бы это? Я неправильно обрабатываю массив состояний?