我们需要创建一个包含textfiles内容的二叉树。指针selection_a和selection_b指向direcetory中的另一个文本文件。
文本文件的结构如下: 1. line:标题 2.行:OptionA 3. line:OptionB 4. - n。 line:Text。
第一个文件在启动程序时作为参数给出。所有文件都应保存在程序的开头。 然后显示第一个文件的文本,用户可以输入A或B继续。根据选择,显示文件选项A / B的文本,他可以再次决定。
树的最后一个文件不包含选项:2。和3.行是“ - \ n”。
问题是,此代码只读取第一棵树的所有选项A文件。它不读取任何B选项。 最后,程序显示内存访问错误。
我知道代码可能有点像caotic,但我们是编程的初学者。 希望有人可以提供帮助。 这是代码:
struct story_file
{
char *title;
char *text;
struct story_file *selection_a;
struct story_file *selection_b;
};
答案 0 :(得分:1)
您的主要问题出在current->text
首先,将其设置为current->text = "";
,使其指向空字符串(和只读文字)。你应该把它设置为零:
current->text = 0;
然后你要为它添加文本,但忘记为它分配内存:
current->text = strcat(current->text,lines);
你应该这样做:
int currlen, linelen;
linelen= strlen(lines);
if (current->text) currlen= strlen(current->text); else currlen= 0;
char *newtext= malloc(currlen+linelen+1);
if (current->text) strcpy(newtext, current->text); else *newtext= 0;
strcat(newtext, lines);
if (current->text) free(current->text);
current->text= newtext;