【发布时间】:2013-11-24 06:01:47
【问题描述】:
根据我在此站点上找到的其他查询,我正在尝试通过使用 **double 指针来打印指向字符(字符串)的指针数组,如下所示:
char *input=malloc(128), *color[7]={0}, **colors=malloc(8);
fgets(input, 128, stdin);
sscanf(input, "%s%s%s%s%s%s", &color[0], &color[1], &color[2], &color[3], &color[4], &color[5]);
color[6]=NULL;
colors=color;
while(*colors)
printf("%s ", colors++);
我从上面收到的输出似乎将每个输入字符串阻塞到 4 个字节,然后如果超过 4 个字节就会溢出,因为如果我输入:“黑色红色金色白色绿色蓝色”,例如,我收到:“黑色红色金色whitgreeblue goldwhitgreeblue whitgreeblue greeblue blue。”非常令人沮丧。
我尝试取消引用颜色++,就像我在其他示例中看到的那样,但这会导致程序崩溃。最终, printf 仅用于调试。这是我正在尝试创建的 char ** (void) 函数的一部分,以将我正在尝试打印的内容分配给 char ** 类型的局部变量。我该如何解决这个问题?
【问题讨论】:
-
malloc()不是魔法... -
好的,很酷。没想到是这样的。
-
嗯,你使用它的时候就好像它是一样的,所以......
-
我用它来分配内存。顺便说一句,我的问题的哪一部分不清楚或没有显示出任何研究工作?在过去的三个小时里,我一直在这个网站和其他网站上寻找类似的问题。如果那确实是你,我不欣赏势利的反对票,仅仅因为是一个 3 个月大的 C 程序员。