c++ - 如何使用 fgets 获取整行

标签 c++ c string unix stdin

我需要从不同的流(不仅仅是从标准输入)读取数据。我发现了 fgets 函数,可以读取一些有限数量的字符,但是我需要像 gets 一样获取整个字符串,但我必须指定输入流。请帮忙解决这个问题。

最佳答案

读取整个文件的正常过程是这样的:

  • 打开文件
  • 追寻到底
  • 读取位置
  • 创建该大小的缓冲区
  • 寻求开始
  • 读取缓冲区
  • 关闭文件

此站点上的示例正是这样做的:http://www.cplusplus.com/reference/cstdio/fread/

如果您想读取直到特殊字符,则只需在循环中运行 fgets,并使用 realloc 来调整缓冲区大小。一种常见的方法是不是每次都增加固定数量的缓冲区大小,而是增加一个递增值,例如每次循环迭代时将其大小加倍。这样您将执行最多 log(n) 次 realloc 调用。

关于c++ - 如何使用 fgets 获取整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27215351/

相关文章:

C++函数声明和对象初始化的区别

python - 如何高效地将图像从C进程传递到Python进程?

C 控制字符串?

javascript - 将递增数字添加到字符串使用 javascript .replace regex

c++ - 使用 c/c++ 以编程方式从 html 文件中提取表格

c++ - 三重嵌套 For 循环的时间复杂度,其中索引相互依赖

你能解释一下下面两个c代码片段之间的区别吗

c - 逐行读取文件中的整数

windows - 如何在cmd for循环中迭代字符串?

C++ 运行时错误?