我已经在这个代码上工作了几天,这就是我已经达到的目标(我之前已经问过)。代码点是打印给定字符串上每个字母的出现次数,仅更改letters()
和report()
。
我在printf
添加了letters()
,以便了解最新情况。我不太确定在函数letters()
中是否需要第一个循环但它是打印整个输入字符串。另外,如果我不将第一个循环放在letters()
中,那么在report()
当前是NULL
(为什么???)。 letters()
中的第二个循环仅打印输入字符串的最后一个字母(同样为什么?)。并且report()
再次只打印字符串的最后一个字母,而current->occurences
打印一个随机的6位数字(可能是mem地址?),报告也一直持续,这意味着当前永远不会变为{{ 1}} ... 。我已经研究了好几天了,我无法理解为什么NULL
和letters()
上的第二个循环不起作用,它们对我来说似乎是正确的。任何帮助表示赞赏...
report()
答案 0 :(得分:0)
另外,如果我不把第一个循环放在letters()中,那么在report()中当前为NULL(为什么???)。
report()
时它仍然是NULL。letters()中的第二个循环只打印输入字符串的最后一个字母(同样为什么?)。
letters()
的第一个循环中,您唯一要做的就是将newnode->ch
分配给当前字母,当循环退出时,它将具有最后一封信。而report()再次只打印字符串的最后一个字母,而current-> occurences会打印一个随机的6位数字(可能是mem地址?
report()
打印一个随机数,因为您不知道是什么
在newnode->occurs
中增加值之前的letters()
值。也报告永远,这意味着当前永远不会变成NULL ???
letters()
中第一个循环中的逻辑被破坏。此代码中有太多错误。我建议你坐下来阅读更多关于C指针的基础知识。