【发布时间】:2020-04-18 11:10:53
【问题描述】:
程序需要从用户那里获取输入文本和一个选项。在这个阶段,我目前正在研究 ap: 选项,它从用户那里读取文本并将相应的数据附加到相应的数组中。 (此外,我必须输入带有选项作为前缀的文本,例如 ap:Text,因为这是测试我的程序的机器人输入它的方式。)。
这里是代码:https://gist.github.com/Kritsos/03d08f29beb97d24eba1cbc4e83962ab
我知道这有点难以理解,所以我会尽可能地解释它。首先,我知道有很多内存泄漏,我会在这 3 个函数正常工作后立即处理它们。我试图动态分配几乎所有东西(这就是我使用三指针的原因),我希望分配是正确的,而不是问题的原因。 par 函数应该从输入文本中获取一个段落,这很容易,因为输入文本本身就是一个段落,所以我只是将文本复制到段落数组中。现在 sent 和 word 功能是我遇到问题的功能。两者都基于相同的逻辑。我从用户那里获取输入文本,我尝试找到结束字符(“.!?;”代表句子“”代表单词),在那里放置一个'\0',将字符串复制到相应的数组然后做同样的事情但是我没有再次检查整个输入文本,而是从放置 '\0' + 1 的位置开始。
【问题讨论】:
-
我觉得这个家庭作业给这堂课带来了很多麻烦stackoverflow.com/q/59509457
-
这当然是……想想去年的项目是井字游戏。
-
Valgrind says 你在你的 reallocs 中使用了统一化的值,但是你的代码对我来说太难了,我无法弄清楚发生了什么。您真的应该考虑对其进行重组,以便每个功能都做更少的工作并且更容易推理。考虑一下:首先具有计算单词/句子数量并将其作为整数返回的函数,然后分配所需的数组,然后具有填充这些数组的函数。
-
您可以通过使用数组索引而不是指针体操来简化您的代码。而且,一旦你认为你需要
***指针,你应该重新设计成结构。注意:除main()之外的所有函数都返回 void。为什么? -
我希望下一课是关于结构的。另外:即使没有它们,这里也不需要三指针。只需双指针和指针数组就足够了。函数可以返回它们使用或产生的字符/单词/段落的数量。或错误代码。