You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言Hello World程序运行后立即关闭,如何添加延迟查看输出?

C程序运行后立即退出?教你几种合理的延迟/停留方法

一、最省心的方案:等用户输入再退出

没必要刻意加延迟,让程序等你按个键再结束,就能彻底解决看不到输出的问题:

#include<stdio.h>

int main(){
    printf("Hello World!\n"); // 加\n触发输出缓冲刷新,确保内容立刻显示
    printf("按回车键退出...");
    getchar(); // 阻塞等待用户输入
    return 0;
}

如果你的printf没有加\n,记得在getchar()前调用fflush(stdout);强制刷新输出缓冲,否则可能看不到打印内容。

二、Windows平台专属延迟(你的GCC为MinGW,适配Windows)

Windows系统提供Sleep()函数(注意首字母大写),参数为毫秒数,需要引入<windows.h>头文件:

#include<stdio.h>
#include<windows.h>

int main(){
    printf("Hello World!\n");
    Sleep(2500); // 延迟2500毫秒(2.5秒)后退出
    return 0;
}

直接用GCC编译即可,MinGW会自动链接所需系统库,无需额外参数。

三、跨平台的标准延迟方法

如果想编写能在Windows、Linux等多平台运行的代码,可使用<time.h>结合nanosleep实现非忙等延迟(不会占满CPU):

#include<stdio.h>
#include<time.h>

void delay_ms(unsigned int ms){
    struct timespec req = {0};
    req.tv_sec = ms / 1000;
    req.tv_nsec = (ms % 1000) * 1000000; // 将毫秒转换为纳秒
    // 若被信号打断,继续等待剩余时间
    while(nanosleep(&req, &req) == -1);
}

int main(){
    printf("Hello World!\n");
    delay_ms(2500);
    return 0;
}

这种方法不会让CPU空转,比嵌套循环的效率高很多。

四、为什么你的delay()函数报错?

delay()不是C标准库函数,它仅存在于部分老旧编译器(如Turbo C)或嵌入式开发环境中,GCC(包括MinGW)未实现该函数,因此编译时会出现「隐式声明警告」和「未定义引用错误」——编译器找不到这个函数的具体实现。

五、嵌套循环延迟的问题

你使用的双层嵌套循环属于忙等待,程序会持续占用CPU执行空循环操作,导致CPU使用率飙升、风扇转速加快,这种方法效率极低,不推荐使用。

内容的提问来源于stack exchange,提问作者Sinan Mert Uluçay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:05:18