更改 stdout 的文件位置指示符

标签 c stdout

我试图弄乱文件位置指示器并覆盖屏幕上已有的内容。

    #include <stdio.h>

    int main ()
    {
       fpos_t position;


       fgetpos (stdout, &position);
       fputs ("That is a sample",stdout);
       fsetpos (stdout, &position);
       fputs ("This",stdout);

       return 0;
    }

我想要这个“This is a sample”。我从 cplusplus.com 得到了类似的代码唯一的区别是它们使用实际文件而不是标准输出。 stdout 是否有一些我不知道的特殊异常(exception)。

我以为我可以像对待文件一样对待标准输出。出于某种原因,我将此作为输出: That is a sampleThisPress any key to continue 。 . . 我真的很想知道为什么。 This guy甚至在 cplusplus.com 上问过同样的问题,但没有任何回应

我知道 fseek 和 lseek,如果它们有效,我可能会使用它们,但无论如何我想知道为什么上述方法不起作用。如果您有更好的方法,我愿意接受建议,但我仍然想知道我在这里做错了什么。提前谢谢你。

最佳答案

如果您想要实现的是修改屏幕输出,您可能需要查看 ncurses(或类似的东西)。

或者,如果您只是想要这样的东西(显示“第 2 部分”占目前已完成的“总”工作量的进度条):

....
cout << part * 100 / total << "% done\r"; cout.flush();
....

\r 是“回车”,会将光标移回行首,而不向下移动。

关于更改 stdout 的文件位置指示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009429/

相关文章:

java - 以编程方式与 Java 中的 I/O 程序交互

c - 检查 argv 中的符号时出现段错误

c - 宏中参数的意外多重评估

arrays - 我哪里越界了?

Node.js:将标准输出捕获到字符串变量中的最简单方法

c - 在 C 中重定向 stdout 时的奇怪行为

c++ - 未找到 CPP 中来自外部源的函数(Qt)

c - Gets函数被重叠

python - 如何在 Python 中禁用 socketserver 的输出?

c - C 程序中的 stdout 转义查询和 stdin 冲突(无 ncurses)