【发布时间】:2013-04-12 12:54:09
【问题描述】:
我正在使用 minilibX 库在 C 中制作光线追踪引擎。
我希望能够在 .conf 文件中读取要显示的场景配置:
例如:
(Az@Az 117)cat universe.conf
#randomcomment
obj:eye:x:y:z
light:sun:100
light:moon:test
对象的数量可以在 1 和无限之间变化。 从现在开始,我正在读取文件,在 char **tab 中逐一复制每一行,并按找到的对象数进行分配,如下所示:
void open_file(int fd, struct s_img *m)
{
int i;
char *s;
int curs_obj;
int curs_light;
i = 0;
curs_light = 0;
curs_obj = 0;
while (s = get_next_line(fd))
{
i = i + 1;
if (s[0] == 'l')
{
m->lights[curs_light] = s;
curs_light = curs_light + 1;
}
else if (s[0] == 'o')
{
m->objs[curs_obj] = s;
curs_obj = curs_obj + 1;
}
else if (s[0] != '#')
{
show_error(i, s);
stop_parsing(m);
}
}
现在,我希望能够将每个tab[i] 的每个信息存储在一个新的char **tab 中,每个对象1 个,使用':' 作为分隔符。
所以我需要初始化和malloc一个未确定数量的char **tab。我该怎么做?
(Ps: 我希望我的代码和我的英语足够让你理解。而且我只使用了非常基本的功能,比如读、写、打开、malloc……我正在重新构建其他所有内容,例如 printf、get_line 等)
【问题讨论】:
-
根据需要分配新空间有什么问题?
-
我需要为每个新对象分配一个新的 char **tab。那么,我该怎么做呢?有没有办法根据需要声明尽可能多的 char **tab?