Я бы посоветовал сделать это, прежде всего, подумать, что нужно для создания предметов?
Когда дело доходит до char **variables; char **terminals; char **actions
, вам, очевидно, придется выяснить, как их объявлять и читать, но я не думаю, что вы можете вставить / 0 в файл (символ EOF ??)
Как бы вы хотели, чтобы это было записано в файл? Можете ли вы предоставить пример вывода, как вы думаете, его следует хранить? Возможно, один элемент на строку в файле? Это должен быть бинарный файл?