#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)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]