gpt4 book ai didi

c - 将 getline 的输入按空格分解为字符指针数组

转载 作者:行者123 更新时间:2023-11-30 15:33:46 25 4
gpt4 key购买 nike

我正在尝试获取从 getline 给出的输入,其中包含空格,并获取每个单词并将其放入字符指针数组中。我真的不知道该怎么做。我知道有 strtok,但这只是去掉了空格,将其变成一个巨大的单词以供我理解。一些见解会非常有帮助。

最佳答案

这不会向您灌输代码,但问题可能会指导您。

您必须知道答案的问题:

  1. 您是否需要一次只处理一行中的单词,还是需要将所有已读取的单词保留在内存中?
  2. 如果同一个单词出现多次,是否需要将单独的出现分开?
  3. 行的长度、单词的长度或行中的单词数是否有合理的上限?如果您保留所有单词,那么所有信息都适合内存吗?

假设您使用 POSIX getline() ,然后你可以用它来为单词分配存储空间。您必须决定如何管理指针数组的存储。固定大小的分配是最简单的,但动态分配的数组并不难。如果您一次处理一行,那么生活就很容易。如果您跨行累积数据,那么您必须确保 getline() 为每行分配新空间 — 这并不难,但需要稍微小心。无论哪种方式,您都需要小心释放 getline() 分配的空间。

您可以使用strtok(),但如果 strtok_r()strtok_s()可用,您应该使用其中之一。 (尽管它们在错误时的行为不同,但它们实际上是可以互换的。请注意,C11 附录 K 中定义的 strtok_s() 与其他两个都不同。)

另一个选择是使用 strdup()要在解析单词时复制单词,可以使用 strchr() 来查找标记单词结尾的空格。然后,您可以通过 getline() 重复使用相同的存储空间,因为您已经拥有了单词的副本。

关于c - 将 getline 的输入按空格分解为字符指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com