gpt4 book ai didi

c - 如何将文件内容打印到标准输出而不将它们存储在内存中?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:41 25 4
gpt4 key购买 nike

我的程序接受任意长行的文件。因为我不知道一行有多少字符,所以我想将整行打印到标准输出,而不用 malloc-ing 数组来存储它。这可能吗?

我知道可以一次一个 block 地打印这些行——但是,执行打印的函数会被经常调用,我希望避免 malloc-ing 数组的开销来保存输出,在每一次通话中。

最佳答案

首先,你不能打印不存在的东西,这意味着你必须将它存储在某个地方,要么在堆栈中,要么在堆中。如果您使用 FILE*,那么 libc 会自动为您完成。

现在如果您使用FILE*,您可以使用getc 一次获取一个ASCII 字符,检查该字符是否为换行符并将其推送到stdout。

如果您使用的是文件描述符,您可以一次读取一个字符并执行完全相同的操作。

这两种方法都不需要您在堆中显式分配内存。

现在,如果您使用 mmap,您可以执行一些 strtok 系列函数,然后将字符串打印到标准输出。

关于c - 如何将文件内容打印到标准输出而不将它们存储在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45202151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com