./数据集<文件名
//我将数据读入文件并将其存储到数组中......
...
//这里我需要向用户询问一个数字,但是,程序总是跳过用户输入并继续......
char回答; answer = getchar(); //总是跳过getchar()
答案 0 :(得分:0)
不,那不是这样做的。不知道它是否会起作用,但是打开文件,读取它并保留stdin以便与用户交互不会更容易吗?
FILE *yourinputfile;
yourinputfile=fopen("whatevernamethefilehas","r");
// read with the appropriate routines, eg fscanf
fclose (yourinputfile);
char answer; answer = getchar(); // won't skip now
你会注意到C中的所有输入例程都有一个读取标准输入的“速记”变种,以及一个以f
开头的读取文件的变种
手册页是你的朋友:)
答案 1 :(得分:0)
如果允许使用并发,则可以fork()一个新进程和dup2()stdin到子进程中的新文件描述符。你想确保不要在你的主进程中使用dup2()你的stdin,否则你将失去从stdin读取的能力。
如果这看起来像方向的正确细节
,请高兴地详细说明编辑:你能分享一下你如何“停止”从传统的stdin读书吗?我很困惑,因为通常从文件中读取不应该阻止你从stdin读取。
Edit2 - 我认为fvu是对的,如果你看一下你链接到你的页面,那么回答谈到使用dup2()将stdin文件描述符复制到临时文件描述符,替换stdin的文件描述符用其他东西,然后用它的临时副本再次替换它。这听起来像你在寻找