我需要从不同的流(不仅仅是从标准输入)读取数据。我发现了 fgets 函数,可以读取一些有限数量的字符,但是我需要像 gets 一样获取整个字符串,但我必须指定输入流。请帮忙解决这个问题。
最佳答案
读取整个文件的正常过程是这样的:
- 打开文件
- 追寻到底
- 读取位置
- 创建该大小的缓冲区
- 寻求开始
- 读取缓冲区
- 关闭文件
此站点上的示例正是这样做的:http://www.cplusplus.com/reference/cstdio/fread/
如果您想读取直到特殊字符,则只需在循环中运行 fgets,并使用 realloc 来调整缓冲区大小。一种常见的方法是不是每次都增加固定数量的缓冲区大小,而是增加一个递增值,例如每次循环迭代时将其大小加倍。这样您将执行最多 log(n) 次 realloc 调用。
关于c++ - 如何使用 fgets 获取整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27215351/