在C中程序完成时暂停屏幕

时间:2012-02-21 22:57:04

标签: c

我希望能够在程序完成时按照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]);
    }
}

有什么建议吗?

我在 MonoDevelop 中使用 Wubi ,如果这有任何区别的话。

7 个答案:

答案 0 :(得分:18)

要做到这一点,快速破解,最常见的两个选项是:

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

system("pause");

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

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

我建议采用后一种方法,虽然第一种方法确实在“任意”键上触发,而底部方法仅在输入时触发。

答案 1 :(得分:4)

使用getchar()

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

答案 2 :(得分:1)

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

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

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

或者,对于仅限Windows,还有:

system("pause");

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

将程序编译成exe。然后创建一个批处理脚本以“包装”程序:

@echo off
foo.exe
pause
exit

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