【发布时间】:2018-11-10 12:14:34
【问题描述】:
我正在尝试编写我自己的图灵机。我的程序接受两个文件作为参数:机器必须使用的初始磁带和规则文件。该规则文件由每行一条规则组成,每条规则是五个整数:当前状态、找到的符号、新符号、前进方向和新状态。为此,我有一个函数可以读取我的文件并将每组五个 ints 放入规则结构中。然后生成这些结构的数组。
我想要做的是返回这个数组以便以后能够使用它。这是我所拥有的:
struct rule {
int cur_state;
int symbol;
int new_symbol;
int direction;
int new_state;
};
typedef struct rule rule;
struct vect {
int nb_elem;
rule *p;
};
vect rule_generator (char * file_rule){
int line_number = 0;
int ligne;
char tmp;
rule rule_list[line_number];
vect output_rules;
FILE * file;
file = fopen(file_rule, "r");
for(tmp = getc(file); tmp != EOF; tmp = getc(file)){
if ( tmp == '\n')
line_number++;
}
output_rules.p = malloc(line_number*sizeof(rule));
assert(output_rules.p);
output_rules.nb_elem = line_number;
for (ligne = 0; ligne < line_number; ligne++ ){
fscanf(file, "%d %d %d %d %d", &rule_list[ligne].cur_state,
&rule_list[ligne].symbol, &rule_list[ligne].new_symbol,
&rule_list[ligne].direction, &rule_list[ligne].new_state);
}
fclose(file);
return output_rules;
}
int main (int argc, char *argv[]){
vect rule_list = rule_generator(argv[2]);
printf("symbole : %ls \n", &rule_list.p[0].symbol);
return 0;
}
正如你们中的一些人可能已经猜到的那样,这不会打印任何东西......我一直在挠头,试图访问我的数组。我真的可以在这里用一只手!
【问题讨论】: