C - 读取未知长度的字符串说明

标签 c string dynamic-memory-allocation

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

几个问题:

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

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

size的目的是什么?到底给了函数吗?

提出一个单独的问题,因为我了解该方法,但不了解幕后的一些内容。

最佳答案

if (!str) return str; 基本上意味着 if (str == NULL) return NULL; 这只是错误检查 的返回值>重新分配

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

size 参数仅表示我们分配的缓冲区的初始大小。因此,如果调用该函数的人非常清楚(不一定准确)知道字符串有多大,他们可以在此参数中给出它,并通过避免额外调用 realloc 来节省大量时间>.

关于C - 读取未知长度的字符串说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727116/

相关文章:

C整数除法和底

c - C中的文件I/O写入和读取文件

C++ 将参数传递给内联汇编函数

c - 在不使用 malloc() 的情况下,下面的程序如何工作?

c - 如何在c中使用不同变量类型的内存分配?

C struct 段错误

c - 复合字符数组和字符串文字之间是否存在任何内部差异?

Python:什么是 String[a:b] 的等价物,但对于 Unicode

c++ - 使用 impi 库删除未分配内存时的错误

c++ - 改变动态数组的长度?