C 未知输入长度

C 未知输入长度,c,string,fgets,getline,C,String,Fgets,Getline,有几种方法可以检索字符串输入,例如getline(),或fgets(),但它们都需要字符串的大小作为参数。但如果我想检索未知大小的字符串呢?如何在C语言中使用getline()或fgets()呢?答案是否定的。你不能读取长度不确定的字符串。但是,您可以一次读取一个字符,直到达到在程序中分配的存储空间大小为止。在循环中使用fgetc int fgetc(FILE *stream) 打开流,一次读取一个字符,当您看到您的哨兵字符(可能是换行符)时停止读取 getline不是标准C。因为fgets是

有几种方法可以检索字符串输入,例如
getline()
,或
fgets()
,但它们都需要字符串的大小作为参数。但如果我想检索未知大小的字符串呢?如何在C语言中使用
getline()
fgets()
呢?

答案是否定的。你不能读取长度不确定的字符串。但是,您可以一次读取一个字符,直到达到在程序中分配的存储空间大小为止。在循环中使用fgetc

int fgetc(FILE *stream)

打开流,一次读取一个字符,当您看到您的哨兵字符(可能是换行符)时停止读取

getline
不是标准C。因为
fgets
是标准C,如果你不能使用它,那就很奇怪了。你有什么问题?请阅读。正如我所说,它们都需要字符串的大小作为参数,我不知道字符串的大小。您可以读取长度不确定的字符串。没有内置代码可以执行。好吧,你可以做任何事情,也没有内置代码可以执行。(我提出这个问题的原因是在“你不能读取长度不确定的字符串。但是,你可以一次读取一个字符,直到你达到你在程序中分配的存储空间大小。”“另一个”选项也不是内置的。)我的答案准确地描述了您所说的内容,但从技术上讲,它不是读取字符串,而是读取一系列字符项并连续保存它们。