Одна проблема.
struct room *newRoom(char *name) {
struct room r;
r.name = name;
r.dp = 0;
rooms[rp++] = &r;
return &r;
}
struct room r;
является локальной переменной и исчезнет, когда управление выйдет из функции newRoom
.
Вместо этого вы можете
struct room *r = malloc(sizeof(struct room));
r->name = name;
r->dp = 0;
rooms[rp++] = r;
В readLine
выделить достаточно памяти для чтения полной строки, в противном случае вы в конечном итоге получите доступ вне привязки и вызовите неопределенное поведение.
char *readLine(FILE *fin) {
char *str = (char *) malloc(sizeof(char) * 256);
^^^Max line length
...
}
Если вы не хотите выделять память вслепую realloc
- это то, что вам нужно.
В AS3 URL текущего swf файла может быть найден через экземпляр класса LoaderInfo. Таким образом в Вашем основном классе документов (или основной кадровый сценарий этапа) это должно дать Вашему URL Вашего swf файла:
this.loaderInfo.url
Каждый MovieClip имеет loaderInfo участника, который даст Вам его информацию.