小编n.d*_*bau的帖子

C将stdin重定向到键盘

我在Mac OSX上编写了一个小型C程序,它执行以下步骤:

  1. 从stdin读取一些输入并将输入存储到内存中.
  2. 运行一些计算并将输出打印到stdio

在步骤1和2之间,我想提示用户并等待某种键盘输入以发出"继续进行到步骤2"的信号.问题是当使用命令调用程序时,stdin已被重定向:

$ ./simple < input.in
Run Code Online (Sandbox Code Playgroud)

我想在读取文件后将stdin重定向到键盘,我不知道该怎么做.我试过用

fclose(stdin);
freopen("newin", "r", stdin);
Run Code Online (Sandbox Code Playgroud)

但是stdin之后没有从键盘上读取.任何有关如何做到这一点的建议将不胜感激.

还有一些要点:

  • 真正的程序比这更复杂,但简单仍然说明了我的问题.
  • 这样做的原因是我想在执行期间暂停我的程序,以便我有足够的时间将"简单"过程加载到OSX应用程序中,称为性能分析工具.
  • 如果有帮助,下面提供了一些示例代码.

int main(void) {

    // STEP 1
    int array[ARRLEN];
    readinput(array, ARRLEN);


    // WAIT FOR KEYBOARD INPUT TO PROCEDE
    // redefine stdin to keyboard
    fclose(stdin);
    freopen("newin", "r", stdin);
    char c[5]; 
    char cmp[5] = ".";
    puts ("Enter text. Include a dot ('.') in a sentence to exit:");

    while (1) {
        fgets(c, sizeof(c), stdin);
        printf("c = %s\n", c);
        // if (strcmp(c, cmp))
        //     break;
        sleep(1); …
Run Code Online (Sandbox Code Playgroud)

c stdin instruments

7
推荐指数
1
解决办法
2695
查看次数

标签 统计

c ×1

instruments ×1

stdin ×1