在C语言中,从变量读取数据并将其传递给另一个变量时出现问题
我正在尝试用C创建一个3D游戏。 但是我在下面的代码中有一个问题 解释代码 我有一个名为1.cub(锁定代码)的文件,这个文件有地图。 使用函数在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
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
当我编译所有这些时,我得到了以下信息:
在图中:
-->存储地板颜色后,开始存储天花板颜色时,varstor
中的旧值将保留并添加新数据:
-->将所有数据存储在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);