【问题标题】:Read in String from stdin using pointers使用指针从标准输入读取字符串
【发布时间】:2020-01-24 15:42:16
【问题描述】:

C 指针和字符串

如果我不知道字符串的维度,是否可以从标准输入读取字符串并存储在指针中?

【问题讨论】:

  • 是的,你需要动态分配内存。你听说过malloc()?
  • 有两种方法 - easy but non-portable 和硬但便携,但有一些限制。
  • 或者显式调用 posix getline() 或 getdelim() 函数,这至少意味着如果你将来构建在 posix 以外的东西上,你就不会挠头想知道如何破坏 scanf . man7.org/linux/man-pages/man3/getline.3.html
  • Matteo, “如果我不知道字符串的尺寸?” --> 您是否有一个合理的上限,或者您是否希望允许用户通过您的代码消耗任意数量的内存?将输入限制为几百个字符怎么样?

标签: c


【解决方案1】:

考虑使用 fgets() 读取整行输入

【讨论】:

    【解决方案2】:

    不仅在运行时不知道输入的最终长度,而且输入的块长度也不知道。但是答案是肯定的,可以按照您的要求进行操作,但需要使用 malloc 或 calloc AND realloc。结合使用这些函数将允许您捕获来自stdin 的输入,而无需事先知道会有多少。

    请参考the accepted answer to this question for details。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-12
      • 2015-08-07
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多