漫话linux:倒计时项目

1.回车换行:\n表示既回车又换行,但这两者在本质上不是一个操作,换行只光标垂直移动到下一行,回车表示光标从换行位置换到每行的开头

2.缓冲区:c语言维护的一段内存

3.如果需要强制刷新,则需要三个基本流:标准输入(stdin),标准输出(显示器,stdout),标准错误流(stderr),如果需要刷新流则输入fflush(文件流)(提前执行缓冲区程序 )

3.首先构建目录文件:使用mkdir目录构建一个名为process的目录,再写里面的文件:proCess.h,proCess.c,main.c使用多文件操作,分别对应头文件(stdio,once命令表示头文件只执行一次),程序文件(暂时为空),main(主要文件)

#pragma once
#include<stdio.h>

然后是makefile文件(使用make进行编译),$@代表左边的文件,$^代表右边所有的依赖对象也就是两个文件,以及.PHNOY的强制执行(防止重名)

process:proCess.c main.c
		gcc -o $@ $^
.PHONY:clean
clean:
		rm-f process

最后是main文件,解析一下,首先c语言输出到屏幕上的命令在c语言命令读取未到return 0的时候会被暂时存放在缓冲区,所以正常输出会先停顿几秒再输出全部的数字,而我们需要倒计时类似的输出,所以要在每次sleep后直接输出数字,也就是刷新缓冲区,就要使用fflush(文件流)的命令,而我们又希望数字都在一个位置而不使用\n,所以要使用\r打印,然后就是防止count>10的打印方式-(左对齐)和2(限制长度,如果count>100则换为3)

#include"proCess.h"
#include<unistd.h>

int main()
{
  int count=10;
  while(count)
  {
    printf("%-2d\r",count);
    count--;
    fflush(stdout);
    sleep(1);
  }
  printf("希望考试别太难");
  return 0;
}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值