Pause screen at program completion in C

2020-02-10 09:55发布

I want to be able to do something along the lines of Press any key to exit at program completion, but have no been able to figure out how to.

When I run my program, the terminal exits before I can see the results.

//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]);
    }
}

Any suggestions?

I am using MonoDevelop in Wubi, if that makes any difference.

标签: c
7条回答
别忘想泡老子
2楼-- · 2020-02-10 10:09

It's an old question but thought I'd add a technique I use when testing programs on a Windows box.

Compile program into an exe. And then create a batch script to "wrap" the program along the lines of:

@echo off
foo.exe
pause
exit

which will execute your program as it should be, without any dirty hacks, while allowing you to pause the window and see the output.

查看更多
贼婆χ
3楼-- · 2020-02-10 10:12

Use getchar():

...program...
printf("press enter to continue...\n");
getchar()
查看更多
可以哭但决不认输i
4楼-- · 2020-02-10 10:15

getchar() is the right way to go, but you'll run into problems caused by scanf leaving '\n' in the input buffer - it will return immediately. See Why doesn't getchar() wait for me to press enter after scanf()?

查看更多
我命由我不由天
5楼-- · 2020-02-10 10:18

Depending on your need and platform, you may use getch() (or _getch()), or ultimately getchar().

The problem with getchar() is that it requires the user to press "enter". The advantage with getchar() is that it is standard and cross-platform.

getch() get all the other property : it just needs a key to be pressed, no display, no "enter" needed. But it's non standard, so support varies depending on platform.

Alternatively, for windows only, there is also :

system("pause");
查看更多
家丑人穷心不美
6楼-- · 2020-02-10 10:22

Possible options: 1) system("pause"); 2) getch(); 3) getchar();

查看更多
劳资没心,怎么记你
7楼-- · 2020-02-10 10:29

if we usegetchar();, getch(); or system("pause"); when we open the debug folder and run the file .exe it still exit immediately :)) i use cin >> variable; it certain pause the screen :))

查看更多
登录 后发表回答