【问题标题】:Dealing with input in C处理 C 中的输入
【发布时间】:2011-12-11 20:59:06
【问题描述】:

真的是一个简短的问题,正在寻找、想知道并询问有关处理此类输入的最佳方法的任何提示:

 word word
 word word word word
 word word word
 word word

其中每行单词的数量是完全随机的,每个单独的单词都可以添加到某些数据结构中,例如链表或树。

获取每一行并解析?获取字符()?有什么线索吗?

【问题讨论】:

  • 恶意输入的可能性有多大?例如,你能得到一个超过 1 KiB 的单词吗?标点符号会怎样?

标签: c input scanf fgets getchar


【解决方案1】:

使用fgets 一次阅读一行似乎是最好的选择。然后只需使用strtok 或类似于按空格分割的东西并迭代结果。

【讨论】:

  • 请注意strtok() 在处理输入时会破坏​​其输入。它也不是线程安全的,您必须确保您从解析器调用的任何其他函数都没有使用strtok(),并且调用您的解析器的任何函数都没有使用strtok()。调用函数的条件通常不会太繁琐;然而,在库代码中,第二个条件(没有调用函数也使用strtok())是不可执行的。
  • 有没有其他推荐的方式,我对 strtok 不太满意
  • @user1048116: strtok_r 是线程安全的版本。无论如何,在您的情况下,我认为您不必担心 Jonathan Leffler 指出的内容。
  • 同意;对于手头的直接目的,strtok() 可能就足够了。但最好了解您正在使用的工具的弱点,以免日后被咬。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
相关资源
最近更新 更多