linux中sleep()怎么用,我感觉我用的对的呀

新手刚开始学编程。我希望能实现1到20的计数功能,每一个数延迟一秒,为啥gcc直接卡住,不显示任何东西,大神求解惑。图片

这是我写的代码,求大神教一教我。图片图片图片

不是应该是Thread类调用吗。Thread.sleep(1000);

 1.sleep的使用没有错,是正确的;
 2.
 #include<stdio.h>
 #include<stdlib.h>
 #include<unistd.h>
  #include<string.h>
  int main(int argc,char **argv)
 {
     while(1)
     {
          int i;
        for(i=1;i<=20;++i)
         {
           printf("i=%d\n",i);
            sleep(1);
         }
        break;  //加上break,20次计数结束后,就终止进程,不然会出现死循环;
     }

   return 0;                                                                                     
 }

3.至于你说的会卡在gcc???我没有明白,gcc是一个编译器,是对你编写程序进行一个语法检查,判断是否有语法错误;它编译成功后会生成一个
可执行文件,你要执行才能得到结果的;具体步骤如下:
(1)gcc 文件名.c    ---->会默认生成一个a.out可执行文件
(2)./a.out      ---->执行生成的可执行文件,便可看到想要的结果;

若有帮助,还望采纳,谢谢^_^ ^_^ ^_^ ^_^

首先卡住因为你的while(1)死循环了没有退出条件,把while循环去掉即可。


其次没有输出是因为有个输出缓冲的存在,输出缓冲一般是行缓冲,也就是在遇到换行(\n)之间都不会输出任何数据,直到遇到换行或者用fflush刷缓冲区或者程序退出才会输出缓冲区的数据。


参考代码:

 #include <stdio.h>

 int main(void)
 {
    int i;
    for(i=1;i<=20;i++)
    {
        printf("%d ",i);
        fflush(stdout);//将缓冲区数据刷新到屏幕上
        sleep(1);
    }
    putchar('\n');//换行
    return 0;
}

另外不建议随便暴露自己的个人信息。。