问题描述
简单的测试程序:
#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
的写入被刷新,所以至少在 stdio 中something 明白我正在与终端交互。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)