【c语言】c语言转义字符详解

🎈个人主页:豌豆射手^
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:c语言
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

引言

在C语言中,转义字符是一种特殊的字符序列,用于表示一些无法直接输入或打印的字符,如换行符、制表符等。通过转义字符,我们可以在字符串中插入特殊的控制字符或者其他特殊字符。了解和掌握C语言中的转义字符是编程中的重要一环,它们可以帮助我们更灵活地处理字符串,并且确保输出的内容能够被正确地解释和显示。

本文将详细介绍C语言中常见的转义字符及其含义,帮助读者深入了解这一重要概念,并在实际编程中更加灵活地运用。

在这里插入图片描述

一 转义字符的概念

在C语言中,转义字符是以反斜杠(\)开头的字符序列,用于表示一些在普通文本中难以直接表示或者具有特殊含义的字符。这种表示方式使得我们能够在字符串中插入特殊字符或执行控制字符的功能。

例如,如果你想在一个字符串中表示换行,你可以使用转义字符 \n,而不是直接输入字符 ‘n’。转义字符使得程序员可以直观地在代码中表达特殊的字符,而不会被编译器误解。

printf("Hello,\nWorld!");

运行结果:


Hello,
World!

这个例子中,\n 在字符串中表示换行符,使得 “Hello,” 和 “World!” 分别在两行输出。

常见转义字符如下:

| 转义字符 | 描述                     |
|----------|--------------------------|
| \'       | 单引号                   |
| \"       | 双引号                   |
| \\       | 反斜杠                   |
| \n       | 换行符                   |
| \t       | 水平制表符               |
| \r       | 回车符                   |
| \b       | 退格符                   |
| \f       | 换页符                   |
| \a       | 警告(响铃)             |
| \v       | 垂直制表符               |
| \?       | 问号                     |
| \0       | 空字符                   |
| \xhh     | 十六进制表示的字符       |
| \ooo     | 八进制表示的字符         |

接下来,我将一 一介绍这些转义字符。

二 常见的转义字符及其含义

2.1 ’ - 单引号

在C语言中,’ 是一个转义字符,用于表示单引号(')。

通常情况下,单引号用于定义字符常量或字符字面值,但是如果你想要在一个字符常量中包含单引号本身,就需要使用转义字符 '。

下面是关于 ’ 转义字符的详细介绍:

描述

’ 转义字符用于在C语言中表示一个单引号字符 '。

使用场景

在定义字符常量时,如果想要包含单引号本身,就需要使用 ’ 转义字符。

代码示例

#include <stdio.h>

int main() {
    char ch = '\'';
    
    printf("The character constant is: %c\n", ch);
    
    return 0;
}

运行结果

The character constant is: '

代码分析

在这个示例中,我们定义了一个字符变量 ch,并将其赋值为 '。

在打印时,我们使用 %c 格式控制符来打印字符常量 ch,结果输出的是单引号字符 '。

这里的 ’ 转义字符确保了单引号字符被正确地包含在了字符常量中,并且在输出时显示为单个的单引号字符。

2.2 " - 双引号

在C语言中," 是一个转义字符,用于表示双引号(")。

与单引号转义字符类似,双引号转义字符也允许在字符串中包含双引号字符本身。

下面是关于 " 转义字符的详细介绍:

描述

" 转义字符用于在C语言中表示一个双引号字符 "。

使用场景

在定义字符串常量时,如果想要包含双引号本身,就需要使用 " 转义字符。

代码示例

#include <stdio.h>

int main() {
    char str[] = "She said, \"Hello!\"";

    printf("The string constant is: %s\n", str);

    return 0;
}

运行结果

The string constant is: She said, "Hello!"

代码分析

在这个示例中,我们定义了一个字符串数组 str,并将其初始化为 “She said, “Hello!””。

在双引号 “Hello!” 前面加上了转义字符 ",这样就可以将双引号包含在字符串常量中。

最终输出结果显示了完整的字符串,包括双引号字符本身。

2.3 \ - 反斜杠

在C语言中,\ 是一个转义字符,用于表示反斜杠(\)。

反斜杠转义字符允许在字符串中包含反斜杠本身。

下面是关于 \ 转义字符的详细介绍:

描述

\ 转义字符用于在C语言中表示一个反斜杠字符 \。

使用场景

在字符串中,如果想要包含反斜杠本身,就需要使用 \ 转义字符。

代码示例

#include <stdio.h>

int main() {
    char path[] = "C:\\Windows\\System32\\";
    
    printf("The path is: %s\n", path);
    
    return 0;
}

运行结果

The path is: C:\Windows\System32\

代码分析

在这个示例中,我们定义了一个字符串数组 path,并将其初始化为 “C:\Windows\System32\”。

在Windows路径中,反斜杠 \ 用作目录分隔符,但是在C语言中,反斜杠本身是转义字符,因此如果想要在字符串中表示反斜杠,需要使用 \。

最终输出结果显示了完整的路径,包括了反斜杠字符本身。

2.4 \n - 换行符

在C语言中,\n 是一个转义字符,用于表示换行符。

换行符通常用于在输出文本中创建新的行。

下面是关于 \n 转义字符的详细介绍:

描述

\n 转义字符用于在C语言中表示一个换行符,它会将输出的光标移动到下一行的开头。

使用场景

在输出文本时,如果需要在特定位置换行,就可以使用 \n 转义字符。

代码示例

#include <stdio.h>

int main() {
    printf("Hello, world!\n");
    printf("This is a new line.\n");
    
    return 0;
}

运行结果

Hello, world!
This is a new line.

代码分析

在这个示例中,我们使用了两次 printf 函数来输出文本。

在第一次调用 printf 时,字符串 “Hello, world!” 后面紧跟着 \n 转义字符,这使得输出的文本会在这个位置换行。

第二次调用 printf 时,同样在字符串末尾加上了 \n,从而创建了第二行文本。

运行结果显示了两行文本,其中第一行包含 “Hello, world!”,第二行包含 “This is a new line.”。

2.5 \t - 水平制表符

在C语言中,\t 是一个转义字符,用于表示水平制表符。

水平制表符在输出文本时用于在特定位置添加水平间距,通常相当于多个空格的宽度。

下面是关于 \t 转义字符的详细介绍:

描述

\t 转义字符用于在C语言中表示一个水平制表符,它会在输出的文本中产生一个水平间距。

使用场景

在输出文本时,如果需要在特定位置添加水平间距,可以使用 \t 转义字符。

代码示例

#include <stdio.h>

int main() {
    printf("Name:\tJohn\n");
    printf("Age:\t25\n");
    printf("City:\tNew York\n");
    
    return 0;
}

运行结果

Name:   John
Age:    25
City:   New York

代码分析

在这个示例中,我们使用了三次 printf 函数来输出文本。

在每个输出字符串中,\t 转义字符被用于在特定位置添加水平间距。

运行结果显示了一个类似表格的输出,其中每一行都包含一个标签和与之对齐的值,通过使用 \t 实现了这种对齐效果。

2.6 \r - 回车符

在C语言中,\r 是一个转义字符,用于表示回车符。

回车符会将光标移动到当前行的开头,覆盖之前的内容。

下面是关于 \r 转义字符的详细介绍:

描述

\r 转义字符用于在C语言中表示一个回车符,它会将输出的光标移动到当前行的开头。

使用场景

在输出文本时,如果需要回到当前行的开头重新输出,可以使用 \r 转义字符。

代码示例

#include <stdio.h>

int main() {
    printf("Loading: [");
    for (int i = 0; i <= 10; ++i) {
        printf("#");
        fflush(stdout); // 刷新输出缓冲区,确保立即输出
        for (int j = 0; j < 100000000; ++j); // 模拟耗时操作
        printf("\rLoading: [%-10s] %d%%", "##########" + 10 - i, i * 10);
    }
    printf("\n");
    
    return 0;
}

运行结果

Loading: [##########] 100%

代码分析

在这个示例中,我们模拟了一个加载进度条的过程。

使用 \r 转义字符,我们在每次更新进度时都将光标移动回到行首,然后重新输出加载进度。

在每次更新后,使用 %d%% 格式说明符显示当前加载百分比。

fflush(stdout) 语句确保立即将输出刷新到屏幕上,以便实时显示加载进度。

最终输出结果显示了加载进度条完成的状态。

2.7 \b - 退格符

在C语言中,\b 是一个转义字符,用于表示退格符。

退格符会使光标向左移动一格,但并不删除字符,而只是覆盖它。

下面是关于 \b 转义字符的详细介绍:

描述

\b 转义字符用于在C语言中表示一个退格符,它会使光标向左移动一格,但不会删除任何字符。

使用场景

在输出文本时,如果需要覆盖之前输出的字符,可以使用 \b 转义字符。

代码示例

#include <stdio.h>

int main() {
    printf("Countdown: 3\b2\b1\bGO!\n");
    
    return 0;
}

运行结果

Countdown: 321GO!

代码分析

在这个示例中,我们使用了一个 printf 函数来输出文本。

在输出字符串 “Countdown: 3\b2\b1\bGO!\n” 中,\b 转义字符被用于在输出过程中退格。

因为 \b 使得光标向左移动一格,所以在输出过程中会覆盖之前的数字,最终输出结果中只有 “321GO!” 被显示出来。

2.8 \f - 换页符

在C语言中,\f 是一个转义字符,表示换页符(Form Feed),它通常用于打印输出时在文本中插入一个换页符,将输出位置移至下一页或下一页面的开头。

换页符通常用于控制打印机或显示器进行页面分隔。当控制台或终端不支持换页功能时,\f 可能不会产生任何可见效果。

下面是一个示例代码,演示了如何在C语言中使用\f转义字符:

#include <stdio.h>

int main() {
    printf("Page 1\n");
    printf("This is the content of page 1.\n");
    printf("\f"); // 使用 \f 插入换页符
    printf("Page 2\n");
    printf("This is the content of page 2.\n");
    return 0;
}

代码分析:

在 main 函数中,我们使用 printf 函数输出了两页内容。

第一次调用 printf 输出 “Page 1” 和 “This is the content of page 1.”,然后换行。

接着使用 \f 转义字符插入了一个换页符,这将导致输出位置移到下一页的开头。

第二次调用 printf 输出 “Page 2” 和 “This is the content of page 2.”,然后换行。

最后,return 0; 终止程序的执行。

运行结果:

Page 1
This is the content of page 1.

Page 2
This is the content of page 2.

在支持换页功能的终端或打印机上,上述代码将在输出时产生两页内容,每页内容分别包含 “Page x” 和 “This is the content of page x.”,其中 x 为页码。

2.9 \a - 警告(响铃)

在C语言中,\a是一个转义字符,代表警告(响铃)。

当程序遇到\a时,它会触发计算机发出警告声或者使得输出设备发出警告信号,这通常是通过发出一种特定的声音来实现的,比如在终端中会发出嘟嘟的声音。

这个转义字符在一些早期的终端和打印机上很有用,可以吸引用户的注意力或者提醒用户程序的某些特殊情况。

然而,在现代计算机中,由于很多设备不再支持发出声音,因此\a转义字符的作用有时候会被忽略或者无效。

下面是一个简单的C语言示例,演示了如何使用\a转义字符:

#include <stdio.h>

int main() {
    printf("警告!\a\n");
    return 0;
}

运行结果:

当你运行这个程序时,如果你的终端支持发出声音,你会听到一声响铃,并且输出会是:

警告!

代码分析:

printf(“警告!\a\n”);:这一行代码使用了printf函数来输出字符串 “警告!”,并在字符串末尾加上\a转义字符。

这样,当程序执行到这一行时,会触发终端发出响铃的动作。最后的\n是为了输出换行符,使得下一个输出在新的一行显示。

虽然在现代计算机中,发出声音的功能可能已经不再常见,但了解和使用\a转义字符仍然是有意义的,因为它可以作为一种编程习惯,或者在一些特殊的应用场景中发挥作用。

2.10 \v - 垂直制表符

在C语言中,\v是一个转义字符,代表垂直制表符。

垂直制表符是一种控制字符,它可以用来在输出中创建垂直方向上的空白间隔,类似于水平制表符(\t)在水平方向上创建空白间隔的作用。

当程序遇到\v时,它会在输出中创建一个垂直方向上的空白间隔,使得后续的输出在新的一行,并且可能会在垂直方向上向下移动到一个特定的位置。

下面是一个简单的C语言示例,演示了如何使用\v转义字符:

#include <stdio.h>

int main() {
    printf("第一行\v第二行\n");
    return 0;
}

运行结果:

当你运行这个程序时,输出会是:

第一行
      第二行

代码分析:

#include <stdio.h>:包含了标准输入输出库,使得我们可以使用printf函数来输出文本。

printf(“第一行\v第二行\n”);:这一行代码使用了printf函数来输出字符串 “第一行”,然后是垂直制表符\v,接着输出字符串"第二行"。

当程序执行到\v时,会在输出中创建一个垂直方向上的空白间隔,使得 “第二行” 在新的一行显示,并且可能会向下移动到一个特定的位置。

最后的\n是为了输出换行符,使得下一个输出在新的一行显示。

垂直制表符\v在实际应用中相对较少见,但了解它的存在和使用方式对于理解C语言中的转义字符是很重要的。

2.11 ? - 问号

在C语言中,?是一个转义字符,代表问号。它用于在字符串中插入普通的问号字符,而不是作为一个特殊字符来解释。

在大多数情况下,使用问号字符本身并不需要转义,但在某些情况下,为了编程的规范性和可读性,可以使用?来明确表示问号。

下面是一个简单的C语言示例,演示了如何使用?转义字符:

#include <stdio.h>

int main() {
    printf("这是一个问号转义字符示例:\?\n");
    return 0;
}

运行结果:

当你运行这个程序时,输出会是:

这是一个问号转义字符示例:?

代码分析:

printf(“这是一个问号转义字符示例:?\n”);:这一行代码使用了printf函数来输出字符串 “这是一个问号转义字符示例:”,然后是问号转义字符?,接着输出换行符\n。

由于问号通常不需要转义,所以在这个示例中,使用?并没有实际的必要,但这是为了演示转义字符的使用方式。

总体而言,?在实际编程中的使用较为罕见,因为通常直接使用问号字符即可。然而,了解它的存在和使用方式是有益的,尤其是在某些编码规范或特定的文本处理需求下。

2.12 \0 - 空字符

在C语言中,\0是一个转义字符,代表空字符。空字符是ASCII码为0的字符,也被表示为NUL。

在C语言中,\0通常用于表示字符串的结束,即字符串的终止符。

下面是一个简单的C语言示例,演示了如何使用\0转义字符:

#include <stdio.h>

int main() {
    char str1[] = "Hello, World!";
    char str2[] = "C语言\0转义字符示例";

    printf("字符串1:%s\n", str1);
    printf("字符串2:%s\n", str2);

    return 0;
}

运行结果:
当你运行这个程序时,输出会是:

字符串1:Hello, World!
字符串2:C语言

代码分析:

在代码中,定义了两个字符串str1和str2,分别初始化为 “Hello, World!” 和 “C语言\0转义字符示例”。

其中,str2中使用了\0转义字符来表示空字符,使得在输出时只打印了 “C语言” 部分,而 “转义字符示例” 部分被忽略。

通过printf函数将两个字符串输出到控制台,展示了转义字符\0的作用以及它在字符串中的使用方式。

这段代码简单清晰地说明了C语言中空字符转义字符的用法和字符串的特性。

2.13 \xhh - 十六进制表示的字符

在C语言中,\xhh是一个十六进制表示的字符转义字符,其中 hh 是两个十六进制数字,代表一个字符的 ASCII 码。

这种转义字符允许在字符串中插入特定的字符,而不是直接使用可打印字符。

下面是一个简单的C语言示例,演示了如何使用\xhh十六进制转义字符:

#include <stdio.h>

int main() {
    char hexChar = '\x41';  // 十六进制 ASCII 码 0x41 对应的字符是 'A'
    printf("使用\\xhh表示的字符:%c\n", hexChar);

    return 0;
}

运行结果:

当你运行这个程序时,输出会是:

使用\xhh表示的字符:A

代码分析:

演示了在C语言中如何使用\xhh十六进制转义字符来表示特定的字符。

通过定义一个字符变量 hexChar,并赋值为\x41,实际上是赋予了它字符 ‘A’ 的ASCII码值。

在printf函数中使用 %c 格式控制符将 hexChar 输出为字符形式,最终在控制台打印出了字符 ‘A’。

这个例子清晰地展示了如何使用\xhh转义字符来表示特定的ASCII字符,为处理ASCII字符编码提供了灵活的方式。

2.14 \ooo - 八进制表示的字符

在C语言中,\ooo是一个八进制表示的字符转义字符,其中 ooo 是三个八进制数字,代表一个字符的 ASCII 码。

这种转义字符允许在字符串中插入特定的字符,而不是直接使用可打印字符。

下面是一个简单的C语言示例,演示了如何使用\ooo八进制转义字符:

#include <stdio.h>

int main() {
    char octChar = '\101';  // 八进制 ASCII 码 101 对应的字符是 'A'
    printf("使用\\ooo表示的字符:%c\n", octChar);

    return 0;
}

运行结果:

当你运行这个程序时,输出会是:

使用\ooo表示的字符:A

代码分析:

演示了在C语言中如何使用\ooo八进制转义字符来表示特定的字符。通过定义一个字符变量 octChar,并赋值为\101,实际上是赋予了它字符 ‘A’ 的ASCII码值。

在printf函数中使用 %c 格式控制符将 octChar 输出为字符形式,最终在控制台打印出了字符 ‘A’。

这个例子清晰地展示了如何使用\ooo转义字符来表示特定的ASCII字符,为处理ASCII字符编码提供了灵活的方式。

三 总结

转义字符在C语言中扮演着至关重要的角色,它们使得我们能够在字符串中插入各种特殊字符,从而实现更加丰富和灵活的文本输出。

通过本文的介绍,读者不仅了解了转义字符的概念和作用,还详细了解了C语言中常见的各种转义字符及其含义。

在实际编程中,熟练运用转义字符可以帮助我们处理各种文本输出需求,提高代码的可读性和可维护性。希望本文能够对读者加深对C语言转义字符的理解,并在日常编程中有所帮助。

这篇文章到这就结束啦

谢谢大家的阅读!

如果觉得这篇博客对你有用的话,别忘记三连哦。

我是甜美的江,让我们我们下次再见

在这里插入图片描述

在这里插入图片描述

  • 40
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
目录 历史 前言 I. C语言入门 1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 3. 程序的调试 4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. 布尔代数 4. switch语句 5. 深入理解函数 1. return语句 2. 增量式开发 3. 递归 6. 循环语句 1. while语句 2. do/while语句 3. for语句 4. break和continue语句 5. 嵌套循环 6. goto语句和标号 7. 结构体 1. 复合类型与结构体 2. 数据抽象 3. 数据类型标志 4. 嵌套结构体 8. 数组 1. 数组的基本概念 2. 数组应用实例:统计随机数 3. 数组应用实例:直方图 4. 字符串 5. 多维数组 9. 编码风格 1. 缩进和空白 2. 注释 3. 标识符命名 4. 函数 5. indent工具 10. gdb 1. 单步执行和跟踪函数调用 2. 断点 3. 观察点 4. 段错误 11. 排序与查找 1. 算法的概念 2. 插入排序 3. 算法的时间复杂度分析 4. 归并排序 5. 线性查找 6. 折半查找 12. 栈与队列 1. 数据结构的概念 2. 堆栈 3. 深度优先搜索 4. 队列与广度优先搜索 5. 环形队列 13. 本阶段总结 II. C语言本质 14. 计算机中数的表示 1. 为什么计算机用二进制计数 2. 不同进制之间的换算 3. 整数的加减运算 3.1. Sign and Magnitude表示法 3.2. 1's Complement表示法 3.3. 2's Complement表示法 3.4. 有符号数和无符号数 4. 浮点数 15. 数据类型详解 1. 整型 2. 浮点型 3. 类型转换 3.1. Integer Promotion 3.2. Usual Arithmetic Conversion 3.3. 由赋值产生的类型转换 3.4. 强制类型转换 3.5. 编译器如何处理类型转换 16. 运算符详解 1. 位运算 1.1. 按位与、或、异或、取反运算 1.2. 移位运算 1.3. 掩码 1.4. 异或运算的一些特性 2. 其它运算符 2.1. 复合赋值运算符 2.2. 条件运算符 2.3. 逗号运算符 2.4. sizeof运算符与typedef类型声明 3. Side Effect与Sequence Point 4. 运算符总结 17. 计算机体系结构基础 1. 内存与地址 2. CPU 3. 设备 4. MMU 5. Memory Hierarchy 18. x86汇编程序基础 1. 最简单的汇编程序 2. x86的寄存器 3. 第二个汇编程序 4. 寻址方式 5. ELF文件 5.1. 目标文件 5.2. 可执行文件 19. 汇编与C之间的关系 1. 函数调用 2. main函数和启动例程 3. 变量的存储布局 4. 结构体和联合体 5. C内联汇编 6. volatile限定符 20. 链接详解 1. 多目标文件的链接 2. 定义和声明 2.1. extern和static关键字 2.2. 头文件 2.3. 定义和声明的详细规则 3. 静态库 4. 共享库 4.1. 编译、链接、运行 4.2. 动态链接的过程 4.3. 共享库的命名惯例 5. 虚拟内存管理 21. 预处理 1. 预处理的步骤 2. 宏定义 2.1. 函数式宏定义 2.2. 内联函数 2.3. #、##运算符和可变参数 2.4. 宏展开的步骤 3. 条件预处理指示 4. 其它预处理特性 22. Makefile基础 1. 基本规则 2. 隐含规则和模式规则 3. 变量 4. 自动处理头文件的依赖关系 5. 常用的make命令行选项 23. 指针 1. 指针的基本概念 2. 指针类型的参数和返回值 3. 指针与数组 4. 指针与const限定符 5. 指针与结构体 6. 指向指针的指针与指针数组 7. 指向数组的指针与多维数组 8. 函数类型和函数指针类型 9. 不完全类型和复杂声明 24. 函数接口 1. 本章的预备知识 1.1. strcpy与strncpy 1.2. malloc与free 2. 传入参数与传出参数 3. 两层指针的参数 4. 返回值是指针的情况 5. 回调函数 6. 可变参数 25. C标准库 1. 字符串操作函数 1.1. 初始化字符串 1.2. 取字符串的长度 1.3. 拷贝字符串 1.4. 连接字符串 1.5. 比较字符串 1.6. 搜索字符串 1.7. 分割字符串 2. 标准I/O库函数 2.1. 文件的基本概念 2.2. fopen/fclose 2.3. stdin/stdout/stderr 2.4. errno与perror函数 2.5. 以字节为单位的I/O函数 2.6. 操作读写位置的函数 2.7. 以字符串为单位的I/O函数 2.8. 以记录为单位的I/O函数 2.9. 格式化I/O函数 2.10. C标准库的I/O缓冲区 2.11. 本节综合练习 3. 数值字符串转换函数 4. 分配内存的函数 26. 链表、二叉树和哈希表 1. 链表 1.1. 单链表 1.2. 双向链表 1.3. 静态链表 1.4. 本节综合练习 2. 二叉树 2.1. 二叉树的基本概念 2.2. 排序二叉树 3. 哈希表 27. 本阶段总结 III. Linux系统编程 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ext2文件系统 2.1. 总体存储布局 2.2. 实例剖析 2.3. 数据块寻址 2.4. 文件和目录操作的系统函数 3. VFS 3.1. 内核数据结构 3.2. dup和dup2函数 30. 进程 1. 引言 2. 环境变量 3. 进程控制 3.1. fork函数 3.2. exec函数 3.3. wait和waitpid函数 4. 进程间通信 4.1. 管道 4.2. 其它IPC机制 5. 练习:实现简单的Shell 31. Shell脚本 1. Shell的历史 2. Shell如何执行命令 2.1. 执行交互式命令 2.2. 执行脚本 3. Shell的基本语法 3.1. 变量 3.2. 文件名代换(Globbing):* ? [] 3.3. 命令代换:`或 $() 3.4. 算术代换:$(()) 3.5. 转义字符\ 3.6. 单引号 3.7. 双引号 4. bash启动脚本 4.1. 作为交互登录Shell启动,或者使用--login参数启动 4.2. 以交互非登录Shell启动 4.3. 非交互启动 4.4. 以sh命令启动 5. Shell脚本语法 5.1. 条件测试:test [ 5.2. if/then/elif/else/fi 5.3. case/esac 5.4. for/do/done 5.5. while/do/done 5.6. 位置参数和特殊变量 5.7. 函数 6. Shell脚本的调试方法 32. 正则表达式 1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在C语言中使用正则表达式 33. 信号 1. 信号的基本概念 2. 产生信号 2.1. 通过终端按键产生信号 2.2. 调用系统函数向进程发信号 2.3. 由软件条件产生信号 3. 阻塞信号 3.1. 信号在内核中的表示 3.2. 信号集操作函数 3.3. sigprocmask 3.4. sigpending 4. 捕捉信号 4.1. 内核如何实现信号的捕捉 4.2. sigaction 4.3. pause 4.4. 可重入函数 4.5. sig_atomic_t类型与volatile限定符 4.6. 竞态条件与sigsuspend函数 4.7. 关于SIGCHLD信号 34. 终端、作业控制与守护进程 1. 终端 1.1. 终端的基本概念 1.2. 终端登录过程 1.3. 网络登录过程 2. 作业控制 2.1. Session与进程组 2.2. 与作业控制有关的信号 3. 守护进程 35. 线程 1. 线程的概念 2. 线程控制 2.1. 创建线程 2.2. 终止线程 3. 线程间同步 3.1. mutex 3.2. Condition Variable 3.3. Semaphore 3.4. 其它线程间同步机制 4. 编程练习 36. TCP/IP协议基础 1. TCP/IP协议栈与数据包封装 2. 以太网(RFC 894)帧格式 3. ARP数据报格式 4. IP数据报格式 5. IP地址与路由 6. UDP段格式 7. TCP协议 7.1. 段格式 7.2. 通讯时序 7.3. 流量控制 37. socket编程 1. 预备知识 1.1. 网络字节序 1.2. socket地址的数据类型及相关函数 2. 基于TCP协议的网络程序 2.1. 最简单的TCP网络程序 2.2. 错误处理与读写控制 2.3. 把client改为交互式输入 2.4. 使用fork并发处理多个client的请求 2.5. setsockopt 2.6. 使用select 3. 基于UDP协议的网络程序 4. UNIX Domain Socket IPC 5. 练习:实现简单的Web服务器 5.1. 基本HTTP协议 5.2. 执行CGI程序 A. 字符编码 1. ASCII码 2. Unicode和UTF-8 3. 在Linux C编程中使用Unicode和UTF-8 B. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值