【问题标题】:C - Reading string of unknown length clarification [closed]C - 读取未知长度的字符串澄清[关闭]
【发布时间】:2014-01-10 16:51:39
【问题描述】:

与此相关的问题: How can I read an input string of unknown length?

几个问题:

if(!str)return str 这行是什么意思?

为什么int ch 是一个整数?它不应该是一个字符吗?

size 赋予函数的目的究竟是什么?

问一个单独的问题,因为我了解方法,而不是引擎盖下的一些东西。

【问题讨论】:

  • if(!str) 正在检查分配是否失败。
  • @H2CO3 我们不会用小问题污染问题队列。当高度相关的小问题组合成一个问题时,它的效率更高,质量也更高。
  • @randomusername 呃,我们在这里分头发,不是吗?那很可爱。那么让我们以更好的方式来做:如果我告诉你这个问题(元组)根本不应该被问到怎么办?这些基本结构的所有解释都可以在不错的初学者教程中找到; Stack Overflow 不是一个“通过解释基本程序来教我语言”的网站。
  • @H2CO3 OP有一个问题,他们寻求帮助,因此他们应该能够得到它。当然,SO 可能不适合问这个问题,所以请告诉我们应该将这个问题移到 Stack Exchange 网络的哪个位置。

标签: c string dynamic-memory-allocation


【解决方案1】:

if (!str) return str; 这行基本上意味着if (str == NULL) return NULL;,这只是错误检查realloc 的返回值。

我们将ch 设为int 的原因是因为函数fgetc 返回一个int(这就是我们可以让EOF 返回但EOF 不是合法的char值)。

size 参数仅表示我们分配的缓冲区的初始大小。因此,如果调用函数的人对字符串的大小有一个很好(不一定准确)的想法,他们可以在这个参数中给出它,并通过避免额外调用 realloc 来节省大量时间。

【讨论】:

  • Mucho gracias 随机。除了这里提出的问题之外,还解决了一些问题。
猜你喜欢
  • 2013-01-23
  • 1970-01-01
  • 2014-11-20
  • 2019-12-24
  • 2021-12-04
  • 2011-05-14
相关资源
最近更新 更多