1.\r和\n
C语言中有很多字符
a.可显字符
b.控制字符
对于回车其实有两个动作,首先换行,在将光标指向最左侧
\r :回车
\n:换行
下面举个例子:
 
 
    
 
   把\n去掉会怎样
 
 
    
 
   什么都没输出。为什么?
2.缓冲区概念
观察下两个代码的区别
 
 
    
 
   上面的代码会等待3s后才输出,而下面的代码会直接输出。
不加\n好像是先执行了sleep,在执行printf?
并不是!!! 一定是先执行完printf,在执行sleep
Hello Linux没有被刷新,数据一定是在sleep期间被保存起来了,为什么\n,数据就显示出来了呢?
缓冲区有自己的刷新策略,只要看到\n,就会刷新
 
 
    
 
   为什么没有显示Hello Linux 因为\r将光标移到了最左侧,然后显示的Hello Linux被root@ikun test覆盖。光标跟显示器匹配,光标在哪里,显示器就显示在哪里!
倒计时小程序
 
 
    
 
   什么都没有显示
改写,刷新缓冲区
 
 
    
 
   结果是从屏幕上倒计时从9到0
如果从10开始倒计时呢?
 
 
    
 
   3.进度条程序
文件分离
 
 
   proc.h
#pragma once
#include <stdio.h>  
#include"proc.h"
#include<string.h>
#include<unistd.h>  //该头文件是Linux下的,windows没有
#define SIZE 101
#define STYLE '='
#define ARR '>' 
extern void process();proc.c
#include "proc.h"
void process()
{
    char bar[SIZE];
    memset(bar, '\0', sizeof(bar));  //初始化bar
    int i = 0;
    while (i <= 100)
    {
        printf("[%-100s][%d%%][%c]\r", bar, i);   //-100左对齐,
        fflush(stdout);  //刷新缓冲区
        bar[i++] = STYLE;
        if (i != 100)
            bar[i] = ARR;
        usleep(100000);
    }
    printf("\n");
}main.c
#include "proc.h"
int main()
{
    process();
    return 0;
} 
 
   




![[代码案例] pytorch快速上手写机器学习](https://img-blog.csdnimg.cn/e47c7e93587f4c5c9f64c3f3376492ac.png)


![int[]数组转Integer[]、List、Map「结合leetcode:第414题 第三大的数、第169题 多数元素 介绍」](https://img-blog.csdnimg.cn/20200507205513993.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RpYW5jNjY2,size_16,color_FFFFFF,t_70#pic_center)










