如何暂停C程序?
How to pause the C program?
固定
system("read -r -p \"Press any key to continue...\" key")
我现在正在写一个命令行工具,使用的是C语言,但是我想知道如何暂停程序? (不是中止它,而是可以重新继续)我试图让它像 "Press Enter To Continue".
我在Linux所以我没有或者什么,我有,我试过"pause()",但是这个功能无法实现"Press Enter To Continue",无法重新继续。
想知道是否有功能或什么可以帮助我做到这一点?如果是,请告诉我,谢谢!
PS:这些是我上面的代码,如你所见,我正在使用一个名为"conti"的函数来设置暂停
PLUS:忽略那些"delay"函数,只是做测试。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void delay500ms(void){
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
void delay1s(void){
unsigned char h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
int pause(void);
int ldown (int ln)
{
int k;
for (k=0;k<ln;k++)
{
printf("\n");
}
}
void conti ()
{
printf("\n\nPress Enter To Continue...\n\n");
}
void cmd ()
{
ldown(100);
system("toilet -f mono12 -F metal S-MODE");
ldown(4);
printf("[1] Emergency Reboot\n");
printf("[2] Clean All Progress\n");
printf("[3] Change Into Pure Net\n");
printf("[4] Change Into Normal Net\n");
printf("[5] Edit This Script\n");
printf("[6] Rebuild This Script\n");
printf("[7] Delet This Script\n");
printf("[8] Exit S-MODE\n\n");
printf("Now Please Type Your Command [1~8]:\n");
int cmdn;
cmdn = 8;
scanf("%d",&cmdn);
ldown(4);
switch (cmdn)
{
case 1:
printf("Checking Root Permision...\n\n");
system("reboot");
printf("\n\nShutting Down The System...\n\n");
conti();
break;
case 2:
printf("Cleaning All Progress...\n\n");
system("kill -9 -1");
conti();
break;
case 3:
system("pure");
conti();
break;
case 4:
system("unpure");
conti();
break;
case 5:
printf("Checking Root Permision...\n\n");
system("sudo vim /bin/engage.c");
break;
case 6:
printf("Checking Root Permision...\n\n");
system("sudo gcc /bin/engage.c -o /bin/engage");
printf("\n\nScript Rebuilt! Please Restart The Script\n");
conti();
break;
case 7:
printf("Checking Root Permision...\n\n");
system("sudo rm /bin/engage");
exit(0);
break;
case 8:
printf("Exiting...");
ldown(10);
exit(0);
break;
default:
printf("Unknow Command :(\n\n");
break;
}
}
void main()
{
do
{
cmd();
} while (1==1);
}
你可以这样做:
#include <stdio.h>
int main(){
puts("Press any key to continue ... ");
getchar();
}
如果你真的需要让它被接受:
#include <stdio.h>
int main(){
puts("Press enter to continue ... ");
while(getchar()!=27);
}
27 是输入键码。
另一种 C 解决方案是:
system("read -n1 -r -p \"Press any key to continue...\" key")
在 C++ 中它看起来像这样:
#include <iostream>
int main(){
std::cout << "Press enter to continue ... " << std::endl;
std::cin.ignore(INT_MAX);
cin.get();
}
有几种方法可以做到这一点,您可以将其中一种方法添加到您的 void conti()
函数中。
getchar
- returns 读取为 unsigned char 的字符在文件结尾或错误时转换为 int 或 EOF,
getchar();
在POSIX系统中,可以使用:
#include <unistd.h>
pause ();
在Windows中可以使用kbhit()。
kbhit() 函数
- 用于判断某个键是否被按下。
要在 C 或 C++ 程序中使用 kbhit(),您必须包含头文件 "conio.h".
kbhit() 的用法示例:
while (!kbhit())
printf("Howdyy you haven't pressed a key.\n");
#include <conio.h>
#include <stdio.h>
int main(){
while(1){
puts("Press command ... ");
}
}
固定
system("read -r -p \"Press any key to continue...\" key")
我现在正在写一个命令行工具,使用的是C语言,但是我想知道如何暂停程序? (不是中止它,而是可以重新继续)我试图让它像 "Press Enter To Continue".
我在Linux所以我没有或者什么,我有,我试过"pause()",但是这个功能无法实现"Press Enter To Continue",无法重新继续。
想知道是否有功能或什么可以帮助我做到这一点?如果是,请告诉我,谢谢!
PS:这些是我上面的代码,如你所见,我正在使用一个名为"conti"的函数来设置暂停
PLUS:忽略那些"delay"函数,只是做测试。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void delay500ms(void){
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
void delay1s(void){
unsigned char h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
int pause(void);
int ldown (int ln)
{
int k;
for (k=0;k<ln;k++)
{
printf("\n");
}
}
void conti ()
{
printf("\n\nPress Enter To Continue...\n\n");
}
void cmd ()
{
ldown(100);
system("toilet -f mono12 -F metal S-MODE");
ldown(4);
printf("[1] Emergency Reboot\n");
printf("[2] Clean All Progress\n");
printf("[3] Change Into Pure Net\n");
printf("[4] Change Into Normal Net\n");
printf("[5] Edit This Script\n");
printf("[6] Rebuild This Script\n");
printf("[7] Delet This Script\n");
printf("[8] Exit S-MODE\n\n");
printf("Now Please Type Your Command [1~8]:\n");
int cmdn;
cmdn = 8;
scanf("%d",&cmdn);
ldown(4);
switch (cmdn)
{
case 1:
printf("Checking Root Permision...\n\n");
system("reboot");
printf("\n\nShutting Down The System...\n\n");
conti();
break;
case 2:
printf("Cleaning All Progress...\n\n");
system("kill -9 -1");
conti();
break;
case 3:
system("pure");
conti();
break;
case 4:
system("unpure");
conti();
break;
case 5:
printf("Checking Root Permision...\n\n");
system("sudo vim /bin/engage.c");
break;
case 6:
printf("Checking Root Permision...\n\n");
system("sudo gcc /bin/engage.c -o /bin/engage");
printf("\n\nScript Rebuilt! Please Restart The Script\n");
conti();
break;
case 7:
printf("Checking Root Permision...\n\n");
system("sudo rm /bin/engage");
exit(0);
break;
case 8:
printf("Exiting...");
ldown(10);
exit(0);
break;
default:
printf("Unknow Command :(\n\n");
break;
}
}
void main()
{
do
{
cmd();
} while (1==1);
}
你可以这样做:
#include <stdio.h>
int main(){
puts("Press any key to continue ... ");
getchar();
}
如果你真的需要让它被接受:
#include <stdio.h>
int main(){
puts("Press enter to continue ... ");
while(getchar()!=27);
}
27 是输入键码。
另一种 C 解决方案是:
system("read -n1 -r -p \"Press any key to continue...\" key")
在 C++ 中它看起来像这样:
#include <iostream>
int main(){
std::cout << "Press enter to continue ... " << std::endl;
std::cin.ignore(INT_MAX);
cin.get();
}
有几种方法可以做到这一点,您可以将其中一种方法添加到您的 void conti()
函数中。
getchar
- returns 读取为 unsigned char 的字符在文件结尾或错误时转换为 int 或 EOF,
getchar();
在POSIX系统中,可以使用:
#include <unistd.h>
pause ();
在Windows中可以使用kbhit()。
kbhit() 函数
- 用于判断某个键是否被按下。 要在 C 或 C++ 程序中使用 kbhit(),您必须包含头文件 "conio.h".
kbhit() 的用法示例:
while (!kbhit())
printf("Howdyy you haven't pressed a key.\n");
#include <conio.h>
#include <stdio.h>
int main(){
while(1){
puts("Press command ... ");
}
}