我希望能够在程序完成时按照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
,如果这有任何区别的话。
答案 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
它将执行您应该的程序,没有任何脏的黑客攻击,同时允许您暂停窗口并查看输出。