在C语言中,从变量读取数据并将其传递给另一个变量时出现问题

在C语言中,从变量读取数据并将其传递给另一个变量时出现问题,c,malloc,allocation,C,Malloc,Allocation,我正在尝试用C创建一个3D游戏。 但是我在下面的代码中有一个问题 解释代码 我有一个名为1.cub(锁定代码)的文件,这个文件有地图。 使用函数read\u cf\u color我从1.cub文件中读取地板和天空的颜色,并将地板颜色存储在名为mlx->floor\u color的变量中,将天花板存储在名为mlx->sky\u color的变量中。 另外:使用一些其他函数,我从1.cub读取所有数据,并将其存储在名为mlx->lines的var中 parse_parameters:扫描mlx->l

我正在尝试用C创建一个3D游戏。 但是我在下面的代码中有一个问题

解释代码

我有一个名为1.cub(锁定代码)的文件,这个文件有地图。 使用函数
read\u cf\u color
我从1.cub文件中读取地板和天空的颜色,并将地板颜色存储在名为
mlx->floor\u color
的变量中,将天花板存储在名为
mlx->sky\u color
的变量中。 另外:使用一些其他函数,我从1.cub读取所有数据,并将其存储在名为
mlx->lines
的var中

parse_parameters
:扫描
mlx->line
(1.cub文件)中的所有数据,并将每一行发送到
choose_param

choose_param
:从
parse_parameters
中获取行,并将每个
c
与正确的函数匹配

read\u cf\u color
:此函数获取地板/天花板的颜色。并将其从
char*
转换为
long int

ft\u isfloor
:从上一个函数中获取颜色,并将其赋予右侧变量(
mlx->floor\u color
/
mlx->sky->color

例如:

parse_parameters
将这一行
F 100100214
传递到
选择_param

然后
选择\u param
F
传递到
read\cf\u color
中的
char c
,其余
100100214
传递到
char*s

该函数尝试使此
100100214
看起来像此
100100214
并将其存储在
long int color

当我编译所有这些时,我得到了以下信息:

在图中:

-->存储地板颜色后,开始存储天花板颜色时,var
stor
中的旧值将保留并添加新数据:

-->将所有数据存储在
s
s=| |
中后,将获得一个新数据,如图所示:


我希望您理解我想说的内容

问题出现在最后一个if语句中:

if (*(s++) != ',' && i > 1)
            ft_put_error("Wrong floor color input\n", mlx);
我阅读的内容超出了
\0
,所以这一切就这样发生了

对于
stor
我被分配了2次:

第一次在
stor=(char*)malloc(sizeof(char)*10)

当我第二次呼叫
ft\u strjoin


上述这个问题很难解决,我恐怕不清楚问题是什么。你能指出代码中的一个特定位置,说出你期望或想要的与实际发生的相比吗?如果可能的话,打个电话。谢谢。为了澄清这个问题,请看下面我的答案
R 1000 750
F 100    ,   100   ,   214
C 135,    197    ,214

EA ./textures/cat4.xpm
NO ./textures/cat1.xpm
SO ./textures/cat2.xpm
WE ./textures/cat3.xpm

S ./textures/barrel.xpm

1000000001
11111111111      100000000100000010111
10000000010000
1111101111
1111101111111111111111111111111111111111111
010000000100000110000000000000000000000001
01000000010000011000000000000000001001000111111111111111111111111111111                     
1111110100000001100000000000000000110000000000000000000000010000001
1000000000000001100000000001111110101111111111111111111110000111101
1111110000000001100000010000000000100001100000100000000000000000001
10000010000000011000000000000100001011000000001111111111111111111111
10000000000       0000000000010000000000010110000000001
100000100000000110000000000000000010110000000111
111111000000000110000000000000010010000000001
100011100000W00000000001111110000010000000001      
1000000000000001100000000   000000000100000000001
1000000000000001100000000000000000100000000001
100000000000000110000000002000000010010000001
10000000000000011000000000000000001000000001
10000000000000011000000000000000001000000001
1111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111
if (*(s++) != ',' && i > 1)
            ft_put_error("Wrong floor color input\n", mlx);