【问题标题】:Pause screen at program completion in CC 程序完成时暂停屏幕
【发布时间】:2019-06-15 21:37:22
【问题描述】:

我希望能够在程序完成时按照Press any key to exit 的方式做一些事情,但不知道如何去做。

当我运行我的程序时,终端在我看到结果之前就退出了。

//by Nyxm
#include <stdio.h>

main() {

    int temp, x, flag, num, size;

    printf("\nEnter how many numbers you wish to enter: ");
    scanf("%d", &size);
    int array[size];

    for (x = 0; x < size; x++) {
        printf("Enter an integer: ");
        scanf("%d", &num);
        array[x] = num;
    }

    printf("Please enter either 1 or 2\n1:\tAscending\n2:\tDescending\n\n...");
    scanf("%d", &num);

    if (num == 1) {
        flag = 0;
        while (flag == 0) {
            flag = 1;
            for (x = 1; x < size; x++) {
                if (array[x] < array[x-1]) {
                    flag = 0;
                    temp = array[x];
                    array[x] = array[x-1];
                    array[x-1] = temp;
                }
            }
        }
        } else {
        flag = 0;
        while (flag == 0) {
            flag = 1;
            for (x = 1; x < size; x++) {
                if (array[x] < array[x-1]) {
                    flag = 0;
                    temp = array[x];
                    array[x] = array[x-1];
                    array[x-1] = temp;
                }
            }
        }
    }

    printf("\nYour sorted array:\n");
    for (x = 0; x < size; x++) {
        printf("%d\n", array[x]);
    }
}

有什么建议吗?

我在 Wubi 中使用 MonoDevelop,如果这有什么不同的话。

【问题讨论】:

  • 你的开发环境是Windows还是Linux(或其他)?
  • 使用更好的终端模拟器。
  • 修复你的开发环境。实际的程序不应该被这些东西所阻碍。
  • 如果您在文件中准备好数据并从该文件而不是键盘重定向输入怎么办:program &lt; datafile?你还想等待一个密钥吗(记住“密钥”来自文件)。如果你重定向输出:program &lt; datafile &gt; resultfile?简而言之:不要那样做

标签: c


【解决方案1】:

要进行此快速破解,最常见的两个选项是:

/* Windows only */
#include <stdlib.h>

system("pause");

/* Cross platform */
#include <stdio.h>

printf("Press enter to continue...\n");
getchar();

我建议后一种方法,虽然第一种方法真正触发“任意”键,而底部的方法只触发输入。

【讨论】:

  • 这些都不适合我。我在五笔中使用 MonoDevelop,如果这有什么不同的话。
【解决方案2】:

使用getchar():

...program...
printf("press enter to continue...\n");
getchar()

【讨论】:

    【解决方案3】:

    getchar() 是正确的方法,但是您会遇到由scanf'\n' 留在输入缓冲区中引起的问题 - 它会立即返回。见Why doesn't getchar() wait for me to press enter after scanf()?

    【讨论】:

      【解决方案4】:

      根据您的需要和平台,您可以使用 getch()(或 _getch()),或者最终使用 getchar()。

      getchar() 的问题在于它要求用户按“回车”。 getchar() 的优点是它是标准的和跨平台的。

      getch() 获得所有其他属性:它只需要按下一个键,不需要显示,不需要“输入”。但它是非标准的,因此支持因平台而异。

      或者,仅适用于 Windows,还有:

      system("pause");
      

      【讨论】:

      • 此限制来自 unix 类型的终端通常处于行输入模式,除非您将它们设置为字符模式,此时 getchar() 将在第一个字符处返回,而无需等待结束-线。
      【解决方案5】:

      可能的选择: 1)系统(“暂停”); 2) getch(); 3) getchar();

      【讨论】:

        【解决方案6】:

        如果我们使用getchar();getch();system("pause"); 当我们打开调试文件夹并运行文件 .exe 它仍然立即退出:)) 我用cin &gt;&gt; variable; 它一定会暂停屏幕:))

        【讨论】:

          【解决方案7】:

          这是一个老问题,但我想添加一个我在 Windows 机器上测试程序时使用的技术。

          将程序编译成exe。然后创建一个批处理脚本来“包装”程序,如下所示:

          @echo off
          foo.exe
          pause
          exit
          

          它将按原样执行您的程序,没有任何肮脏的黑客攻击,同时允许您暂停窗口并查看输出。

          【讨论】:

            猜你喜欢
            • 2016-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-01-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多