如何解决尝试使用一些参数获得 $4 时出现问题 - YACC -> C
当我尝试为另一个条件获取 2 个或更多参数时,我处于堆栈状态。 最大的想法是构建符号表来识别代码中的错误,我正在构建一棵树,但现在我们需要构建表,但我不想使用这棵树.. 所以我尝试与我制作的 LinkList 一起使用。 这是我在 c 中的链接列表:
<FormComponent createtoDOhandler={this.createtoDO()} />
不好意思说的不是很清楚,我会试着用例子来解释。
这里是我的一些情况:
<FormComponent createtoDOhandler={this.createtoDO} />
typedef struct linkList {
char* data;
struct linkList* next;
}linkList;
我尝试返回链接列表但它不起作用..所以我尝试将所有参数发送到一个列表。 在“Funct”条件下,您可以看到我调用了函数 buildLinkList,我发送了 $2,$4,$7,$9。
$2- 我可以将它“缓存”在我的列表中并成功打印它..但是 $4 是“参数”并且它返回给我一些变量,当我尝试打印它时,我无法将它们推送到我的列表中我得到垃圾。 我尝试了很多方法来传递它和其他想法,请帮助我破解它,其他想法将受到欢迎。
谢谢!
解决方法
我相信问题就在这里(以及相关的行):
link1->data = (char*)malloc(sizeof(d1)+1);
这里,sizeof(d1)
为您提供名为 d1
的指针的大小,而不是它指向的字符串的大小。对于长度超过指针大小的字符串,这会为您随后复制的字符串分配不足的空间。
要解决此问题,请将 sizeof(d1)
更改为 strlen(d1)
。或者,考虑使用 strdup
,它既分配您需要的空间,又将字符串内容复制到该空间中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。