c - 如何读取结束字符或 '\n' 字符处的输入行?

标签 c

如何在 C 中从控制台读取一行而不初始化像 int buf[30]; 这样的数组?我需要分配它一次和所需的长度,即我可以在读取之前知道输入字符数...
用C语言可以吗?

最佳答案

在读取标准输入之前无法知道标准输入中可用的字符数。但是,您可以使用 getline(3),它将读取直到 \n,然后将数据返回到保存数据的动态分配的缓冲区中(以及大小)该缓冲区)。使用完缓冲区后,您必须释放它。

您应该知道,该例程将阻塞,直到它读取换行符。安全地使用这个例程也很困难,因为格式错误的输入没有得到很好的处理。 (如果输入没有换行符怎么办?)这是许多应用程序经常读取固定长度输入的原因之一。

关于c - 如何读取结束字符或 '\n' 字符处的输入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46515479/

相关文章:

c - 如果函数调用本身充当内存屏障,为什么 pthread_mutex_lock() 和 pthread_mutex_unlock() 包含内存屏障?

c - 使用 extern 关键字在多个源文件上定义全局变量

c - 快速提问

c - 如何确保两个地址的最低有效 4 位相同?

多维数组的连续内存

objective-c - 如何从看不到 Obj-C 变量的 C 函数中写入 NSObject?

将 5 个温度从华氏度转换为摄氏度

c - 这个基本的 C 程序总是得到错误的答案,特别是 x 总是 0,y 的值是正确的

c - 使用分区和交换按字母顺序排序

c - 如何从可执行文件中查找源文件名?