如何在 C 中从控制台读取一行而不初始化像 int buf[30]; 这样的数组?我需要分配它一次和所需的长度,即我可以在读取之前知道输入字符数...
用C语言可以吗?
最佳答案
在读取标准输入之前无法知道标准输入中可用的字符数。但是,您可以使用 getline(3)
,它将读取直到 \n
,然后将数据返回到保存数据的动态分配的缓冲区中(以及大小)该缓冲区)。使用完缓冲区后,您必须释放它。
您应该知道,该例程将阻塞,直到它读取换行符。安全地使用这个例程也很困难,因为格式错误的输入没有得到很好的处理。 (如果输入没有换行符怎么办?)这是许多应用程序经常读取固定长度输入的原因之一。
关于c - 如何读取结束字符或 '\n' 字符处的输入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46515479/