进度条(progress bar)

#include"proccess.h"
void proccess()
{
	int i = 0;
	char bar[102];
	char str[5] = "-\\|/";
	bar[0] = '\0';	
	while(i<=100)
	{
		printf("[%-100s][%d%%][%c]\r",bar,i,str[i%4]);
		fflush(stdout);
		bar[i++] = '#';
		bar[i] = '\0';
		usleep(100000);
	}
	printf("\n");
}#include
   
   
    
    
#include"proccess.h"
int main()
{
	proccess();
	return 0;
}MY_PATH=$(shell pwd)
TARGET=proccess
#CC=g++
CC=gcc
SRC=$(shell ls *.c)
OBJ_O=$(SRC:.c=.o)
	INCLUDE=./
	LIB=./
$(TARGET):$(OBJ_O)
	@echo "[$@] begin building...done"
	@$(CC) -o $(TARGET) $(OBJ_O) -L$(LIB)
%.o: %.c
	@echo "[$@] begin compliing...done"
	@$(CC) -c $< -I$(INCLUDE)
.PHONY :clean
clean:
	@rm -rf *.o $(TARGET)
   
   

回车与换行
  • 回车 \r 本义是光标重新回到本行开头,r的英文return,控制字符可以写成CR,即Carriage Return
  • 换行 \n 本义是光标往下一行(不一定到下一行行首),n的英文newline,控制字符可以写成LF,即Line Feed
  • 在不同的操作系统这几个字符表现不同,比如在WIN系统下,这两个字符就是表现的本义,在UNIX类系统,换行\n就表现为光标下一行并回到行首,在MAC上,\r就表现为回到本行开头并往下一行,至于ENTER键的定义是与操作系统有关的。通常用的Enter是两个加起来。
缓冲区:
        

根据应用程序对文件的访问方式,即是否存在缓冲区,对文件的访问可以分为带缓冲区的操作和非缓冲区的文件操作:

带缓冲区文件操作:高级标准文件I/O操作,将会在用户空间中自动为正在使用的文件开辟内存缓冲区。

非缓冲区文件操作:低级文件I/O操作,读写文件时,不会开辟对文件操作的缓冲区,直接通过系统调用对磁盘进行操作(读、写等),当然用于可以在自己的程序中为每个文件设定缓冲区。

缓冲类型

1、全缓冲区:这种缓冲方式要求填满整个缓冲区后才进行I/O系统调用操作。对于磁盘文件的操作通常使用全缓冲的方式访问。第一次执行I/O操作时,ANSI标准的文件管理函数通过调用malloc函数获得需要使用的缓冲区,默认大小为8192。

2、行缓冲区:在这种情况下,当在输入和输出中遇到换行符时,标准I/O库函数将会执行系统调用操作。当所操作的流涉及一个终端时(例如标准输入和标准输出),使用行缓冲方式。因为标准I/O库每行的缓冲区长度是固定的,所以只要填满了缓冲区,即使还没有遇到换行符,也会执行I/O系统调用操作,默认行缓冲区的大小为1024。

3、无缓冲区:无缓冲区是指标准I/O库不对字符进行缓存,直接调用系统调用。标准出错流stderr通常是不带缓冲区的,这使得出错信息能够尽快地显示出来。

注:①标准输入和标准输出设备:当且仅当不涉及交互作用设备时,标准输入流和标准输出流才是全缓冲的。②标准错误输出设备:标准出错绝不会是全缓冲方式的。

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值