微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您将如何缓冲 stdio 输入流线?

如何解决您将如何缓冲 stdio 输入流线?

简单的测试程序:

#include <stdio.h>

int
main()
{
    FILE *ofile = fopen("/dev/tty","w");
    FILE *ifile = fopen("/dev/tty","r");
    int i;

    fprintf(ofile,"Enter a number: ");
    fscanf(ifile,"%i\n",&i);
    fprintf(ofile,"You entered %d\n",i);

    return 0;
}

fscanf() 在我用 ^D 生成 EOF 之前不会返回。有没有办法让它在换行后返回?

我已经尝试在 /dev/tty 上使用 open(2) 并确认在我点击换行符后 read(2) 正在返回,因此不需要的缓冲肯定发生在 stdio 中,而不是内核中。

如何让我的输入文件表现得像标准输入?

奇怪的是,从 ifile 读取确实会导致对 ofile 的写入被刷新,所以至少在 stdiosomething 明白我正在与终端交互。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。