c - 如何暂停C程序?

标签 c pause unistd.h

已修复

system("read -r -p \"Press any key to continue...\" key")

我现在正在编写一个命令行工具并使用C语言,但我想知道如何暂停程序? (不是中止它,但可以重新继续)我试图使它像“按 Enter 继续”。

我在Linux上,所以我没有或者什么,我有,我尝试了“pause()”,但是这个函数无法实现“Press Enter To Continue”,它无法重新继续。

想知道是否有一个函数或者什么可以帮助我做到这一点?如果有请告诉我,谢谢!

PS:上面是我的代码,如您所见,我使用名为“conti”的函数来设置暂停

PLUS:忽略那些“延迟”功能,只进行测试。

#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();
}

关于c - 如何暂停C程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43475477/

相关文章:

docker - 在 docker 中暂停与停止

java - 如何正确设置 javafx 媒体播放器

javascript - 窗口最小化时 HTML 视频暂停

c - do-while 循环中的 scanf() 即使进行了输入测试也会导致无限循环

c - 将由逗号分隔的数字列表读取到 C 中的数组中

c - 指向字符指针的指针,或者为什么我不能重新分配这个数组?

c - 从c中的文件获取输入时出错

c++ - 为什么从 unistd.h 调用 crypt() 函数会将 errno 设置为 ENOENT?

c - unistd write() 在连续 100 次套接字写入/读取后停止写入,程序返回 3328 错误代码

c - 列出C中代码中定义的所有变量