当前位置: 首页 > article >正文

六十天Linux从0到项目搭建(第八天)(缓冲区、gitee提交)

一 缓冲区,C中有很多字符a. 可显字符 b.控制字符

  • 在 C 语言 中,字符可以分为 可显字符(Printable Characters) 和 控制字符(Control Characters),它们通常存储在 缓冲区(Buffer) 中(如输入/输出缓冲区)。以下是详细的分类和说明:

1. 缓冲区(Buffer)

  • 定义:临时存储数据的内存区域(如键盘输入、文件读取时的中间存储)。

  • 常见场景

    • 输入缓冲区scanf()getchar() 读取数据时暂存。

    • 输出缓冲区printf() 写入数据时暂存(直到遇到 \n 或手动刷新)。

  • 示例

    char buffer[100];
    fgets(buffer, sizeof(buffer), stdin);  // 从输入流读取一行到缓冲区

2. 字符分类

(a) 可显字符(Printable Characters)
  • 定义:能在终端/屏幕上显示出来的字符。

  • 范围

    • ASCII 32~126:包括字母、数字、标点符号等。

    • 例如:Az3!, (空格)。

  • 判断函数

    #include <ctype.h>
    int isprint(int c);  // 若为可显字符,返回非零值
(b) 控制字符(Control Characters)
  • 定义:用于控制设备(如终端、打印机)的特殊字符,不可直接显示。

  • 范围

    • ASCII 0~31 及 127(如 \n\t\b)。

    • 例如:\a(响铃)、\r(回车)、\0(字符串结束符)。

  • 判断函数

    #include <ctype.h>
    int iscntrl(int c);  // 若为控制字符,返回非零值

3. 常见控制字符示例

字符ASCII 值作用
\n10换行(Newline)
\r13回车(Carriage Return)
\t9水平制表符(Tab)
\b8退格(Backspace)
\00字符串终止符(Null)
\a7响铃(Alert)

4. 代码示例:检测字符类型

#include <stdio.h>
#include <ctype.h>

int main() {
    char c = '\t';  // 控制字符示例

    if (isprint(c)) {
        printf("'%c' 是可显字符\n", c);
    } else if (iscntrl(c)) {
        printf("'\\t' 是控制字符\n");  // 注意:控制字符可能无法直接打印
    }

    return 0;
}

输出

'\t' 是控制字符

5. 特殊问题:\r 和 \n 的区别

字符说明
\r回车(Carriage Return),将光标移动到行首(Linux/Windows 换行需配合 \n)。
\n换行(Newline),将光标移动到下一行(Unix/Linux 的换行符)。

不同系统的换行符

  • Windows\r\n(回车+换行)。

  • Unix/Linux\n(仅换行)。

  • Mac(旧版)\r(仅回车)。


6. 缓冲区的刷新(Flush)

  • 行缓冲(Line Buffering):遇到 \n 时刷新缓冲区(如终端输出)。

    printf("Hello\n");  // 立即输出(因为有 \n)
  • 全缓冲(Full Buffering):缓冲区满时刷新(如文件写入)。

  • 无缓冲(Unbuffered):立即输出(如 stderr)。

  • 手动刷新

    fflush(stdout);  // 强制刷新输出缓冲区

7. 应用场景

  • 输入处理:过滤控制字符(如读取密码时忽略 \b)。

  • 文件操作:处理不同系统的换行符(Windows vs Linux)。

  • 终端控制:使用 \r 实现进度条(覆盖当前行)。


总结

概念说明
缓冲区临时存储数据的内存区域,减少直接 I/O 操作。
可显字符可打印的字符(字母、数字、符号),isprint() 检测。
控制字符控制设备行为的特殊字符(如 \n\t),iscntrl() 检测。
\r vs \n回车 vs 换行,不同系统处理方式不同。
缓冲区刷新\nfflush() 或缓冲区满时触发。

二 提交到远程仓库gitee 

Gitee(码云)是国内常用的 Git 托管平台,类似于 GitHub。以下是完整的 命令行操作流程,涵盖从本地仓库创建到推送到 Gitee 的步骤。


前提条件

  1. 已安装 Git

    git --version  # 检查是否安装

    如果未安装,在 Ubuntu 上运行:

    sudo apt update && sudo apt install git

完整操作流程 

  • 访问 Gitee 官网 注册账号。
  • 在 Gitee 上 创建一个新仓库

  • 配置 Git 全局信息(如果未设置)
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
  • 新建个目录,把远端仓库的所有内容都克隆过来
mkdir test_git
cd test_git/
git clone https://gitee.com/drayz/test.git

ls  
test #显示
  •  如果不小心删了也没啥,本地仓库不影响远端
  • 克隆过来的远端仓库本质上就是个.get文件
ls -a
#显示
.git/
.gitignore
LICENSE
README.en.md
README.md
  • tree命令.git可以看到仓库的一些信息
tree .get
#显示
└── refs
    ├── heads
    │   └── master  #单分支
    ├── remotes
    │   └── origin  #remotes指向origin,说明本地仓库和远端关联
    │       └── HEAD
    └── tags  #标签

  •  现在写一个hello.c文件,现在次文件还没有被仓库所管理,git add . 添加当前目录所有没有被添加的文件到仓库
vim hello.c
ls           #显示:hello.c  LICENSE  README.en.md  README.md
git add .
  • commit提交(把文件提交到本地git)
git commit -m "测试"
#显示
[master fad1311] 测试
 1 file changed, 8 insertions(+)
 create mode 100644 hello.c
  • push推送到远端,和本地仓库保持一致
git push   
Username for 'https://gitee.com': drayz   #你的gitee用户名
Password for 'https://drayz@gitee.com':   #密码
#显示
remote: [session-c443ab8f] drayz: Incorrect username or password (access token)
fatal: Authentication failed for 'https://gitee.com/drayz/test.git/'
cyx@VM-0-9-ubuntu:~/test/test$ git push 
Username for 'https://gitee.com': drayz
Password for 'https://drayz@gitee.com': 
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 350.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 254fb1b9
To https://gitee.com/drayz/test.git
   8b2f2f0..fad1311  master -> master

其他操作

  • 查看日志 
git log
  •  查看当前仓库状态
git status

http://www.kler.cn/a/610218.html

相关文章:

  • Mysql 回表查询,什么是回表查询,如何拒绝sql查询时的回表问题
  • Ubuntu软件包离线下载安装
  • AI时代,如何从海量数据中挖掘金矿
  • 基于Babylon.js的Shader入门之六:让Shader反射环境贴图
  • Day24:队列的最大值
  • 深入理解指针(3)(C语言版)
  • 如何自定义5x5键盘
  • 【鸿蒙开发】第五十二章 PDF Kit(PDF服务)
  • 【C++笔记】C++IO流的深度剖析
  • 移动WiFi设备品牌推荐与选购指南
  • Power Automate Send an email (V2)组件的邮件体中插入超链接
  • 花粉过敏激增背后:气候变化如何重塑我们的生活?疾风气象大模型助力未来气象探索
  • Photoshop PS 2025图像处理 windows
  • 黑盒测试与白盒测试详解
  • 蓝桥杯第十届 特别的数
  • Git Bash 设置Notepad++作为默认编辑器
  • 在linux部署网站
  • [plugin:vite:import-analysis] Cannot find module ‘vuex\dist\vuex.esm-bundler
  • 【Qt】Ubuntu22.04使用命令安装Qt5和Qt6
  • 蓝桥杯--奇怪的捐赠