C - 读取未知长度澄清的字符串

Sun*_*awn -1 c string dynamic-memory-allocation

与此相关的问题: 如何读取未知长度的输入字符串?

几个问题:

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

为什么是int ch整数?它不应该是一个炭?

size完全给定函数的目的是什么?

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

ran*_*ame 6

该行if (!str) return str;基本上意味着if (str == NULL) return NULL;哪个只是错误检查返回值realloc.

我们创建ch的原因int是因为函数fgetc返回一个int(这就是我们可以EOF返回的方式还不EOF是合法char值).

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