您的位置:首页 > 百科 > 正文

C语言开发手册(典藏版)

《C语言开发手册(典藏版妈酸般航所仍对严)》是2011年3月出版的图书,作者是薛流依顺园园等。

  • 中文名 C语言开发手册(典藏版)
  • 定价 99.00元
  • 作者 薛园园 等
  • 出版时间 2011年3月
  • ISBN 978-7-121-12120-3

书信息

  C语言开发手册(典藏版)

  薛园园 等编著

  ISBN 978-7-121-12120-3

  2011年3月出版

  定价:99.00元(含DVD光盘1张)

来自  16开

  824 页

宣传语

  百科全书式的C语言编程宝典,值得每个程序员珍藏

  囊括C语言从基础知识到高级开发技术的全景式解读

内容提要

  毋庸置疑,C语言从产生到现在的各个阶段来自,都是最重要和最流行的编程语言之一。熟悉和掌握C语言程序设计,已经成为程序员的一门必修课。本书360百科言简意赅、通俗易懂,知识点覆盖全面,详细介绍了C语言的程序设计及最新的C语言编程技术。

  本书分4篇,共29章,分别介绍了C语言基础、C语言进阶、C语言的接口技术和现代C语言的扩展。首先,介绍了C语言及其开发环境,并全面介绍了C语言的基本语法知识;接着,详节么晶协季器组积新细讲解了C语言的一些高级程序应用;然后,介绍了C语言与其他主流编程语言的接口;最后,讲解了现代C语言负过建江黄选制的一些扩展应用和高级技术。

  本书结构安排深师镇游感紧凑、讲解详细、实例丰富。C语言程序设计的初学者通过本书可以快速掌握C语言程年北布提甚情油川矿序设计方法。同时,本书对现代C语言程序的接口和高级技术进行了全面讲解,对具有一定开发婷李参朝呼团算谓植经验的设计人员也有非常好的参考价值。本书可以作为C语言初学者的入门教材,也方石肉右照苏可作为C语言程序员的参考手册,还可作为大中专院校学生及电脑培训班的参考书。

前 言

 派凯顺故 C语言从产生到现在经历了几十年的发展,一直经久不衰,已成为最重混哥当察建要和最流行的编程语言之一。目前虽然产生了许多新的编程语言,例如C++、Java、C5证掉输误象1等,但这些语言都是借鉴C语言而发展起来的。因此,C语言是每一个计算机技术人员的基本功之一。

  C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此C语言通常又被称为中级语言。学习和掌握C语言,既矿环可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。同时,随着时代的发展,C语言也有了很大的发展,例如嵌入式领域的应用、并行计算、和其他语言接口击台结构味等。

  和其他书籍相比,本书有如下优点

  (1)本书不仅详细介绍了C语言程序设计的基础知识,还对常用的高级编程技术进行了详细的讲解。

  (2)本书在讲解每个知识点的同时,均给出了其在程序设计中府吸盐向酸似护的应用实例,每个个切艺四维真呼先实例都可以通过编译执称星思粮行,使得读者可以快速掌握对应知识点如何在程序设计中应用。

  (3)本书不仅全面介绍了C语言的程序设计方法,还详细讲解了C语言如何与最新流行的编程语推百货河盐异洋府言进行接口,这是C语言的最新发展。

  (4)针对C语言的最新发展,本书还介绍了其在嵌入式、单片机及并行计算方面的应用。这些发展使得C语言保持了经久不衰的活力。

  (5)本书对每一个实例的程序代码都进行了详细的注释和分析,并给出了运行结果,使得读者更加容易理解。

  (6)本书采用应用最为广泛的编译环境,并且适用于多种操作系统。读者既可在Windows环境下、又可在Linux环境下使用本书学习C语言。

目录

  第1篇 C语言基础篇

  第1章 C语言概述 2

  C语言是现代应用最为广泛的编程语言,深受广大程序员的喜爱。本章将简要介绍C语言的产生发展、C语言的特点、标准及C语言流程等内容。并通过一个完整的例子演示C程序开发过程中的项目创建、源代码编写、编译及调试的全过程。同时,将分析C语言程序构成特点。

  1.1 C语言发展历史 2

  1.2 C语言的特点 3

  1.2.1 C语言的基本特点 3

  1.2.2 C语言的优点 4

  1.2.3 C语言的缺点 5

  1.3 C语言的标准 5

  1.3.1 C标准概述 5

  1.3.2 C语言的新标准 6

  1.3.3 编译器对C标准的支持 10

  1.4 C语言开发流程 11

  1.4.1 功能分析 11

  1.4.2 划分任务 11

  1.4.3 编写源代码 12

  1.4.4 编译和链接 12

  1.4.5 修改源代码 13

  1.4.6 功能测试 13

  1.4.7 发布程序 13

  1.4.8 维护和修改 13

  1.5 第一个C程序 13

  1.5.1 创建项目 14

  1.5.2 输入源代码 15

  1.5.3 编译链接 16

  1.5.4 调试 16

  1.6 C程序构成分析 17

  1.6.1 头文件 17

  1.6.2 主函数 17

  1.6.3 其他组成部分 18

  1.7 良好的编程规范 21

  1.7.1 完备和详尽的程序注释 21

  1.7.2 整齐的代码书写格式 21

  1.7.3 简洁清晰的命名 22

  1.8 C语言在不同领域的扩展应用 22

  1.8.1 单片机方面 22

  1.8.2 LabVIEW方面 22

  1.8.3 LabWindows/CVI方面 23

  1.8.4 MATLAB方面 23

  1.8.5 JavaScript方面 23

  1.8.6 并行计算方面 24

  1.8.7 Linux平台 24

  1.9 小结 24

  第2章 典型的C语言开发环境 25

  C语言的成功及大范围的应用也造就了丰富的C语言编译器。对于用户来说,学习C语言要紧密结合C编译器或者C集成开发环境来进行。程序员要想快速高效地开发C程序,必须首先熟悉C语言开发环境的使用。本章将介绍几种主流的C语言开发环境。

  2.1 C语言开发环境简介 25

  2.1.1 C语言开发环境的构成 25

  2.1.2 典型的C语言开发环境 26

  2.2 使用Turbo C开发 30

  2.2.1 Turbo C的开发环境简介 30

  2.2.2 Turbo C的配置文件 31

  2.2.3 用Turbo C创建C程序 31

  2.2.4 编译链接程序 32

  2.2.5 运行程序 33

  2.3 使用Visual Studio开发 34

  2.3.1 Microsoft Visual C++的开发环境简介 34

  2.3.2 使用Visual Studio 2008创建C程序 35

  2.3.3 编译链接程序 38

  2.3.4 调试运行程序 38

  2.4 使用Dev-C++开发 38

  2.4.1 Dev-C++的开发环境简介 39

  2.4.2 Dev-C++开发环境的设置 39

  2.4.3 使用Dev-C++创建C程序 41

  2.4.4 编译和运行程序 41

  2.4.5 升级Dev-C++ 42

  2.5 使用Code::Blocks开发 42

  2.5.1 Code::Blocks的开发环境简介 42

  2.5.2 Code::Blocks开发环境的设置 43

  2.5.3 使用Code::Blocks创建C程序 45

  2.5.4 编译运行程序 46

  2.6 小结 46

  第3章 C语言数据类型 47

  应用程序一般在计算机的内存中运行,对各种数据进行操作。C语言中的数据具有不同的类型,用于不同对象的表示。数据是C语言基本的操作对象。本章将首先介绍内存中程序和数据的存储,然后将介绍C语言中各种数据类型及其特点。

  3.1 数据的存储 47

  3.1.1 内存单元 47

  3.1.2 数据的存储 48

  3.1.3 程序在内存中的映射 49

  3.2 数据类型简介 49

  3.2.1 基本类型 49

  3.2.2 构造类型 51

  3.2.3 指针类型 51

  3.2.4 空类型 51

  3.3 标识符和关键字 51

  3.3.1 标识符 52

  3.3.2 关键字 52

  3.4 分隔符 53

  3.4.1 单分隔符 54

  3.4.2 组合分隔符 54

  3.5 常量 54

  3.5.1 直接常量 54

  3.5.2 符号常量 55

  3.6 变量 58

  3.6.1 变量声明 58

  3.6.2 变量初始化 59

  3.7 整型数据 60

  3.7.1 整型数据的声明 60

  3.7.2 整型数据的存储 61

  3.7.3 整型常量 65

  3.7.4 整型数据的输入 66

  3.7.5 整型数据的输出 68

  3.8 字符型数据 69

  3.8.1 字符型变量的声明 69

  3.8.2 字符型的存储 70

  3.8.3 字符型常量 71

  3.8.4 转义字符 72

  3.8.5 字符型数据的输入 73

  3.8.6 字符型数据的输出 74

  3.9 浮点型数据 75

  3.9.1 浮点型数据的声明 75

  3.9.2 浮点型数据的存储 76

  3.9.3 浮点型常量 77

  3.9.4 浮点型数据的输入 78

  3.9.5 浮点型数据的输出 79

  3.10 类型转换 80

  3.10.1 混合运算中的类型转换 80

  3.10.2 强制类型转换 83

  3.11 C99新增数据类型 84

  3.12 小结 86

  第4章 运算符和表达式 87

  第3章介绍了C语言中的基本数据类型,这些是C语言最基本的操作对象。而在第4章中,读者将了解到最基本的操作方法,即运算符和表达式。在C语言中,通过运算符将常量、变量等操作对象组成表达式,而后,由表达式进一步构成C语句。可以说,运算符和表达式是C语言中最基本的操作方法。

  4.1 运算符 87

  4.1.1 运算符概述 87

  4.1.2 算术运算符 88

  4.1.3 赋值运算符 90

  4.1.4 关系运算符 92

  4.1.5 逻辑运算符 93

  4.1.6 条件运算符 94

  4.1.7 位运算符 95

  4.1.8 其他运算符 98

  4.1.9 运算符优先级和结合性 102

  4.2 表达式 104

  4.2.1 算术表达式 104

  4.2.2 赋值表达式 105

  4.2.3 逗号表达式 106

  4.2.4 关系和逻辑表达式 107

  4.3 小结 109

  第5章 C语句及流程控制结构 110

  第4章介绍了C语言中的运算符和表达式,这些是构成C语句的基本单元。C语句,即C语言中的操作命令,用于使计算机完成特定的功能。一条完整的语句必须以";"结束。C语言的源程序是由一系列的语句组成的,这些语句可以完成变量声明、赋值和控制输入/输出等操作。由于计算机能识别的是机器指令,因此,编译系统将一条语句转换成若干条机器指令来执行。C语言中的语句包括说明语句、表达式语句、循环语句、条件语句、开关语句、复合语句、空语句和返回语句等,下面分别进行介绍。

  5.1 说明语句 110

  5.2 表达式语句 110

  5.3 复合语句 111

  5.4 循环语句 112

  5.4.1 while循环语句 112

  5.4.2 do…while循环语句 113

  5.4.3 for循环语句 114

  5.5 条件语句 116

  5.5.1 单分支if条件结构 116

  5.5.2 双分支if条件结构 116

  5.5.3 阶梯式if…else…if条件结构 117

  5.5.4 if条件结构总结 119

  5.6 开关语句 120

  5.7 跳转语句 121

  5.7.1 goto跳转语句 121

  5.7.2 break跳转语句 122

  5.7.3 continue跳转语句 123

  5.8 函数调用语句 124

  5.9 空语句 125

  5.10 返回语句 126

  5.11 C语言的流程控制结构 127

  5.12 小结 128

  第6章 格式化输入/输出 129

  使用计算机程序解决问题时,需要由用户输入数据,通过程序进行运算后,再输出结果。由此过程可以看到,程序中输入/输出占有相当重要的地位。在C语言中,所有的数据输入/输出都是由库函数完成的,因此都是函数语句。在前面各章的实例中,曾使用过printf()函数和scanf()函数进行数据的输出和输入。本章将详细介绍这两个函数的使用,同时,还将介绍其他一些用于输入和输出的函数。

  6.1 格式化输出函数printf() 129

  6.1.1 printf()函数的格式 129

  6.1.2 printf()函数的格式字符 130

  6.1.3 printf()函数的修饰符 131

  6.1.4 典型的printf()函数实例 134

  6.1.5 动态设置输出宽度和精度 138

  6.1.6 printf()函数的返回值 139

  6.1.7 理解输出列表 140

  6.1.8 printf格式化输出函数综合实例 142

  6.2 格式化输入函数scanf() 143

  6.2.1 scanf()函数的格式 143

  6.2.2 scanf()函数格式字符串 145

  6.2.3 scanf()函数注意问题 146

  6.2.4 scanf()函数的返回值 148

  6.2.5 格式化输入函数scanf()综合实例 148

  6.3 其他常用的输入/输出函数 149

  6.3.1 字符读入函数getchar() 149

  6.3.2 字符读入函数getch() 150

  6.3.3 字符串读入函数gets() 151

  6.3.4 字符输出函数putch() 152

  6.3.5 字符输出函数putchar() 153

  6.3.6 字符串输出函数puts() 153

  6.3.7 格式化内存缓冲区输出函数sprintf() 154

  6.3.8 格式化内存缓冲区输入函数sscanf() 155

  6.4 小结 156

  第7章 数组 157

  在前面章节中介绍了C语言的基本数据类型,包括整型、字符型和实型。以这些基本数据类型为基础,C语言还提供几种构造数据类型。构造类型数据是由基本类型数据按一定规则组成的,数组就是其中一种构造数据类型。在程序中用循环结构可以很方便地处理数组。本章将详细介绍C语言中数组的使用。

  7.1 了解数组 157

  7.1.1 使用数组的好处 157

  7.1.2 数组的概念 158

  7.1.3 数组的维数 160

  7.2 一维数组 161

  7.2.1 一维数组的声明 161

  7.2.2 一维数组的存储 164

  7.2.3 一维数组的引用 164

  7.2.4 向函数传递一维数组 166

  7.2.5 一维数组的初始化 166

  7.3 二维数组 169

  7.3.1 二维数组的声明 169

  7.3.2 二维数组的存储 170

  7.3.3 二维数组的引用 171

  7.3.4 二维数组的初始化 173

  7.4 字符数组和字符串 175

  7.4.1 一维字符串数组 176

  7.4.2 了解字符串 177

  7.4.3 字符串的操作函数 178

  7.4.4 字符串的输入输出 179

  7.4.5 二维字符串数组 181

  7.5 多维数组 182

  7.6 数组的基本应用 182

  7.6.1 反转字符串 182

  7.6.2 查找最大值 183

  7.6.3 数据排序 185

  7.7 小结 186

  第8章 函数 187

  使用C语言编程,就肯定会使用到函数。C语言允许用户使用一些编译环境自带的库函数,例如使用printf()函数输出变量的值,使用scanf()函数接收用户的输入等。合理使用库函数可以大大简化程序设计过程。同时,为了有利于程序的模块化,促进程序资源的共享。C语言也支持用户使用自定义函数。本章将详细介绍函数的概念、调用、作用域等相关知识。

  8.1 函数的概念 187

  8.1.1 什么是函数 187

  8.1.2 函数的分类 188

  8.1.3 函数的定义 189

  8.1.4 main()函数 191

  8.2 函数的工作过程 192

  8.2.1 程序结构 192

  8.2.2 函数执行过程 193

  8.3 编写函数 193

  8.3.1 函数头 193

  8.3.2 返回类型 194

  8.3.3 参数列表 195

  8.3.4 函数体 195

  8.3.5 函数原型 196

  8.4 函数的参数 197

  8.4.1 形参和实参 197

  8.4.2 参数传递过程 198

  8.4.3 值调用 198

  8.4.4 引用调用 199

  8.4.5 数组作为函数参数 201

  8.4.6 指针作为函数参数 205

  8.4.7 main()函数的参数 206

  8.5 函数调用 208

  8.5.1 函数调用方式 208

  8.5.2 被调函数的说明 209

  8.5.3 函数的返回值 210

  8.6 几种典型的函数调用形式 212

  8.6.1 赋值调用与引用调用 212

  8.6.2 嵌套调用 213

  8.6.3 递归调用 215

  8.7 函数及其变量的作用域 221

  8.7.1 函数的作用域 221

  8.7.2 函数的变量作用域 221

  8.8 小结 222

  第9章 指针 223

  指针是C语言中广泛使用的一种数据类型。利用指针可以操作各种基本的数据类型,以及数组等复合数据结构,甚至使用指针还可以访问函数。正确理解和使用指针对于成功进行C语言程序设计是至关重要的。

  指针是C语言最显著的特征,同时又是C语言最危险的特征。例如,在使用指针的程序中,常常因为用错指针导致程序出错,而这类错误却很难发现。更严重的是,对未初始化的指针进行操作可能会导致系统崩溃。

  9.1 内存和变量 223

  9.1.1 计算机内存 223

  9.1.2 变量的存储 224

  9.2 指针和简单变量 225

  9.2.1 指针的概念 225

  9.2.2 创建指针 226

  9.2.3 初始化指针变量 227

  9.2.4 指针变量的引用 228

  9.2.5 给函数传递指针 232

  9.3 指针变量的赋值 232

  9.3.1 初始化赋值 232

  9.3.2 取地址赋值 233

  9.3.3 指针之间赋值 233

  9.3.4 数组赋值 233

  9.3.5 字符串赋值 234

  9.3.6 函数入口赋值 234

  9.4 指针和数组的关系 234

  9.4.1 指针、数组和地址间的关系 234

  9.4.2 指针变量的运算 236

  9.4.3 用指针操作数组元素 237

  9.5 指向多维数组的指针 240

  9.5.1 理解二维数组的地址 240

  9.5.2 多维数组的指针表示 242

  9.5.3 指向多维数组的指针变量 243

  9.5.4 数组名作为函数的参数 247

  9.5.5 指向数组的指针小结 250

  9.6 指针和字符串 251

  9.6.1 字符串的指针表示 251

  9.6.2 字符串指针作函数参数 253

  9.6.3 字符数组和字符指针的区别 254

  9.7 指针数组 256

  9.7.1 指针数组的概念 256

  9.7.2 用指针数组处理字符串 258

  9.7.3 指针数组作函数参数 259

  9.8 指向指针的指针 261

  9.8.1 理解指向指针的指针 261

  9.8.2 二级指针变量与数组 263

  9.9 指针和函数 268

  9.9.1 返回指针的函数 268

  9.9.2 指向函数的指针 269

  9.10 指针和const变量 272

  9.10.1 用const控制指针 273

  9.10.2 const的几种特殊用法 274

  9.11 指针总结 274

  9.11.1 明确分辨各种指针类型 275

  9.11.2 正确理解指针 275

  9.12 小结 276

  第10章 结构 277

  在实际的程序设计中,经常需要处理具有不同数据类型的一组数据。例如,在学生成绩统计表中,应该包含如下几项:姓名(字符型)、学号(整型或字符型)、年龄(整型)、性别(字符型)和成绩(整型或浮点型)。由于数组中各元素的类型和长度都必须一致,因此不能用一个数组存放这一组数据。在这种情况下,C语言中可以使用"结构",这是一种构造数据类型,相当于其他高级语言中的记录类型。

  10.1 结构的定义 277

  10.2 结构变量的定义 278

  10.2.1 先定义结构,再定义结构变量 279

  10.2.2 在定义结构的同时,定义结构变量 279

  10.2.3 直接说明结构变量 279

  10.3 结构变量的使用 280

  10.4 结构变量的初始化 281

  10.5 结构数组 283

  10.5.1 结构数组的定义和引用 283

  10.5.2 结构数组的初始化 285

  10.5.3 结构数组实例 285

  10.6 结构指针 286

  10.6.1 定义结构指针 286

  10.6.2 结构指针的引用 287

  10.6.3 用指针处理结构数组 289

  10.7 嵌套结构 291

  10.7.1 包含数组的结构 291

  10.7.2 包含指针的结构 292

  10.7.3 包含结构的结构 292

  10.8 向函数传递结构 296

  10.8.1 传递结构变量的值 296

  10.8.2 传递结构指针到函数 297

  10.9 小结 298

  第11章 联合、枚举和位域 299

  在C语言中,除了数组和指针外,还定义了联合和枚举两种聚合数据类型,并且可以进行类型说明和定义位域,这些是特殊形式的数据类型。下面分别进行讲解。

  11.1 联合 299

  11.1.1 定义联合类型 299

  11.1.2 定义联合变量 300

  11.1.3 联合变量成员的引用 301

  11.1.4 联合变量数组 301

  11.1.5 联合变量指针 302

  11.1.6 在结构中嵌套联合类型 303

  11.1.7 结构和联合的区别 305

  11.2 枚举 306

  11.2.1 定义枚举类型 306

  11.2.2 定义枚举变量 307

  11.2.3 枚举类型变量的赋值 308

  11.3 类型说明 310

  11.4 二进制数据存储 311

  11.4.1 数据的存储 312

  11.4.2 不同数据类型的二进制表示 312

  11.5 位运算 315

  11.5.1 位逻辑运算符 315

  11.5.2 移位运算符 318

  11.5.3 位运算的复合赋值运算符 318

  11.5.4 位运算的用途 319

  11.6 位域 320

  11.6.1 定义位域结构 320

  11.6.2 位域变量的声明 321

  11.6.3 位域的使用 322

  11.6.4 位域与联合的使用 323

  11.7 小结 324

  第12章 预处理 325

  C语言的程序中可包括各种以符号#开头的编译指令,这些指令称为预处理命令。预处理命令属于C语言编译器,而不是C语言的组成部分。通过预处理命令可扩展C语言程序设计的环境。

  预处理命令通常在程序编译时进行一些符号处理,其并不执行具体的硬件操作。C语言中的预处理命令主要有宏定义指令、文件包含指令和条件编译指令,还有其他一些调试时使用的指令。本章将介绍预处理程序各命令的使用方法。

  12.1 预处理简介 325

  12.1.1 预处理功能 325

  12.1.2 预处理命令 325

  12.2 宏定义命令 326

  12.2.1 无参数的宏定义 326

  12.2.2 带参数的宏定义 329

  12.2.3 #undef命令 331

  12.2.4 预处理操作符#和## 331

  12.3 文件包含指令 334

  12.4 条件编译指令 335

  12.4.1 #if、#else、#endif命令 336

  12.4.2 #elif命令 337

  12.4.3 #ifdef、#ifndef命令 339

  12.4.4 使用#defined和#undef 340

  12.5 其他预处理命令 340

  12.5.1 预定义的宏名 340

  12.5.2 重置行号和文件名命令#line 341

  12.5.3 修改编译器设置命令#pragma 342

  12.5.4 产生错误信息命令#error 342

  12.6 内联函数 343

  12.7 小结 344

  第13章 存储管理 345

  在大多数情况下,存储管理都是操作系统的功能。一般的程序设计语言不提供对内存的管理。而C语言提供了管理内存的相关函数,可实现内存的动态存储管理。这是C语言功能强大的一个表现,本章将介绍C语言的内存组织方式和动态存储管理。

  13.1 内存组织方式 345

  13.1.1 内存组织方式 345

  13.1.2 堆和栈的比较 346

  13.2 C语言的动态存储管理 347

  13.3 分配内存函数--malloc() 347

  13.4 带初始化的分配内存函数--calloc() 349

  13.5 调整已分配内存函数--realloc() 350

  13.6 释放分配的内存函数--free() 352

  13.7 丢失的内存 354

  13.8 小结 356

  第2篇 C语言进阶篇

  第14章 字符及字符串操作 358

  在实际的程序设计中,经常需要处理文本数据。在C语言中,文本数据按字符串格式保存。对于字符串,前面已经介绍过如何用字符数组保存字符串、用字符指针指向一个字符串常量、字符串的输入与输出函数等。

  在C语言的库函数中提供了丰富的处理字符及字符串的函数,本章将介绍这些函数的用法。

  14.1 字符的操作 358

  14.1.1 检查英文字母函数 359

  14.1.2 检查字母数字函数 360

  14.1.3 检查控制字符函数 360

  14.1.4 十进制数字检查函数 361

  14.1.5 可打印字符检查函数 362

  14.1.6 包含空格的可打印字符检查函数 363

  14.1.7 格式字符检查函数 364

  14.1.8 小写英文字母检查函数 365

  14.1.9 大写英文字母检查函数 366

  14.1.10 控制字符检查函数 367

  14.1.11 十六进制数字检查函数 368

  14.1.12 大写字符转换函数 368

  14.1.13 小写字符转换函数 369

  14.1.14 ASCII字符转换函数 370

  14.1.15 大写字符宏转换函数 371

  14.1.16 小写字符宏转换函数 371

  14.2 字符串的存储 372

  14.2.1 字符串的静态存储 372

  14.2.2 字符串的动态存储 373

  14.3 字符串的操作 374

  14.4 检测字符串长度函数 375

  14.5 查找字符串 376

  14.5.1 查找字符位置函数--strchr() 376

  14.5.2 查找相同字符函数--strspn() 378

  14.5.3 查找包含字符位置函数--strcspn() 378

  14.5.4 查找包含字符函数--strpbrk() 379

  14.5.5 查找子串函数--strstr() 380

  14.5.6 字符查找函数--memchr() 381

  14.5.7 字符包含函数--strrchr() 382

  14.6 比较字符串 383

  14.6.1 比较字符串函数--strcmp() 383

  14.6.2 比较部分字符串函数--memcmp() 384

  14.6.3 比较时忽略大小写函数--stricmp() 386

  14.6.4 包含结束符的比较函数--strncmp() 387

  14.7 连接字符串 388

  14.7.1 连接字符串函数--strcat() 388

  14.7.2 连接部分字符函数--strncat() 390

  14.8 复制字符串 391

  14.8.1 复制字符串函数--strcpy() 391

  14.8.2 复制部分字符函数--strncpy() 392

  14.8.3 更省事的复制函数--strdup() 393

  14.8.4 字符串复制函数--memcpy() 394

  14.8.5 带终止字符的复制函数--memccpy() 395

  14.8.6 字符串移动函数--memmove() 395

  14.9 字符和字符串的转换 396

  14.9.1 大小写字符的转换 396

  14.9.2 转换大小写字符串 397

  14.9.3 字符串与数值的转换 398

  14.10 其他字符串函数 399

  14.10.1 字符串反转函数--strrev() 399

  14.10.2 替换字符串中的字符函数--strset() 400

  14.10.3 分解字符串函数--strtok() 401

  14.10.4 字符串填充函数--memset() 402

  14.11 小结 403

  第15章 文件操作 404

  在前面各章的实例程序中,每次执行程序时,需要用户从键盘上输入数据,并将程序运行结果输出到屏幕上。在实际的应用中,可能需要将计算机的处理结果打印输出或保存到一个文件中,以供其他用户查看。当程序需要处理大量数据时,可能还需要从一个文件中读取这些数据。C语言提供了丰富的文件操作函数。本章将介绍操作文件的常用函数。

  15.1 文件与数据流 404

  15.1.1 程序的输入/输出概念 404

  15.1.2 流的概念 404

  15.1.3 预定义的流 405

  15.1.4 文件的基本概念 405

  15.1.5 缓冲文件系统 406

  15.2 文件的打开与关闭 406

  15.2.1 文件指针 406

  15.2.2 打开文件函数--fopen() 407

  15.2.3 关闭文件函数--fclose() 409

  15.3 从文件中读写字符 409

  15.3.1 写字符函数--putc()和fputc() 410

  15.3.2 读字符函数--getc()和fgetc() 411

  15.3.3 合并文件 413

  15.4 从文件中读写字符串 414

  15.4.1 写字符串函数--fputs() 414

  15.4.2 读字符串函数--fgets() 416

  15.4.3 文件格式输出函数--fprintf() 417

  15.4.4 文件格式输入函数--fscanf() 418

  15.5 二进制文件的读写 420

  15.5.1 写入整型数据函数--putw() 421

  15.5.2 读取整型数据函数--getw() 422

  15.5.3 写数据块函数--fwrite() 423

  15.5.4 读数据块函数--fread() 425

  15.5.5 文件检测函数 426

  15.6 文件的随机读写 427

  15.6.1 获取当前位置函数--ftell() 427

  15.6.2 重置文件位置指针函数--rewind() 429

  15.6.3 设置文件位置指针--fseek()函数 430

  15.7 管理缓冲区 432

  15.8 输入/输出的重定向 433

  15.8.1 操作系统的重定向功能 433

  15.8.2 重定向输出 434

  15.8.3 重定向函数--freopen() 435

  15.9 文件管理 436

  15.9.1 重命名文件 436

  15.9.2 删除文件 437

  15.9.3 复制文件 438

  15.9.4 创建临时文件 439

  15.10 小结 441

  第16章 典型库函数应用 442

  前面曾经介绍过C语言中的字符及字符串处理函数。在实际应用中,其实还有很多其他方面的应用。例如数学运算或绘图程序中需要用到大量的数学函数,而另一些程序中可能需要处理日期和时间类的数据等。在C语言中,还提供了一些库函数用于数学和时间处理等。本章将介绍C语言程序设计中,这些典型的库函数应用。

  16.1 随机函数 442

  16.1.1 伪随机函数--rand() 442

  16.1.2 随机种子函数--srand() 443

  16.1.3 更加合理的随机数产生方法 444

  16.1.4 获取任意范围的随机数 445

  16.1.5 获取随机字符 446

  16.2 数学函数 447

  16.2.1 绝对值函数 448

  16.2.2 三角函数 448

  16.2.3 双曲三角函数 449

  16.2.4 指数函数和对数函数 450

  16.2.5 取整函数 452

  16.2.6 浮点型分离函数 453

  16.2.7 幂函数 454

  16.2.8 取余函数 454

  16.2.9 C99中扩展的数学函数 455

  16.3 日期时间函数 455

  16.3.1 表示日期时间的数据结构 455

  16.3.2 获取日期时间 456

  16.3.3 转换日期时间的表示形式 457

  16.3.4 格式化日期时间 460

  16.4 小结 463

  第17章 模块化程序设计方法 464

  C语言提供支持模块化软件开发的功能,如C语言的程序整体由一个或多个函数组成,每个函数都具有各自独立的功能。这些函数还可分布在不同的源文件中,在需要时包含到C主程序中即可。C语言还允许通过使用不同存储类别的变量,控制模块内部及外部的信息交换。

  本章首先简单介绍模块化设计的概念,接着介绍C程序模块的结构,最后详细介绍C语言中不同存储类别变量的使用。

  17.1 模块化程序设计概念 464

  17.2 程序模块结构 465

  17.2.1 C程序的组织 465

  17.2.2 多文件模块的编译链接 467

  17.2.3 文件包含 470

  17.2.4 内部函数与外部函数 471

  17.3 变量的作用域 472

  17.3.1 局部变量 472

  17.3.2 在复合语句中的变量 473

  17.3.3 全局变量 474

  17.3.4 全局变量和局部变量同名 477

  17.4 变量的存储类型 477

  17.4.1 了解存储类型 478

  17.4.2 自动变量 478

  17.4.3 寄存器变量 480

  17.4.4 外部变量 481

  17.4.5 静态变量 482

  17.5 函数、文件、变量的关系 485

  17.6 小结 486

  第18章 典型算法应用 487

  算法是对特定问题求解步骤的描述。对于同一个问题,可能用不同算法来求解,程序员可根据算法的可读性、效率等进行取舍。针对不同的数据保存方式,也会有不同的算法。本章将重点介绍C语言程序设计中的常用算法,也会穿插着简单介绍常用数据和数据结构的内容。

  18.1 排序 487

  18.1.1 排序概述 487

  18.1.2 冒泡排序法 488

  18.1.3 选择排序法 489

  18.1.4 插入排序法 491

  18.1.5 shell排序法 492

  18.1.6 快速排序法 494

  18.1.7 字符串数组的排序 496

  18.1.8 字符串的排序 498

  18.2 查找 499

  18.2.1 顺序查找 499

  18.2.2 折半查找 501

  18.3 队列 503

  18.3.1 队列的概念 504

  18.3.2 队列的操作 504

  18.4 堆栈 508

  18.4.1 堆栈的概念 508

  18.4.2 堆栈的实现 508

  18.5 链表 512

  18.5.1 链表的概念 512

  18.5.2 链表的基本操作 513

  18.5.3 测试链表的功能 517

  18.6 小结 518

  第19章 图形绘制 519

  到目前为止,本书所有的操作都是针对文本模式进行的。从本章开始将带领读者进入一个新的模式--图形模式,主要介绍图形显示的相关技术,包括各种图形的绘制及图形的编辑。本章介绍的是DOS界面下的图形编译,将使用DJGPP开发环境编写相关程序。

  19.1 显示系统简介 519

  19.1.1 显示系统基本概念 519

  19.1.2 显示卡种类 520

  19.1.3 显示模式 520

  19.2 DJGPP开发环境 522

  19.2.1 下载DJGPP开发环境 522

  19.2.2 安装DJGPP开发环境 523

  19.2.3 测试DJGPP开发环境 524

  19.2.4 调用中断服务 525

  19.3 绘图基础 526

  19.3.1 设置显示模式 527

  19.3.2 控制显示缓冲区 527

  19.4 图形函数 528

  19.4.1 绘制点 528

  19.4.2 读取点的信息 529

  19.4.3 绘制直线 530

  19.4.4 绘制矩形 532

  19.4.5 绘制圆 532

  19.4.6 绘制多边形 534

  19.5 编辑图形 536

  19.5.1 复制图形 536

  19.5.2 移动图形 536

  19.5.3 保存图形 537

  19.5.4 载入图形 537

  19.6 小结 539

  第20章 鼠标控制 540

  在前面的程序设计中,需要进行人机交互的时候都是采用键盘输入的。除键盘之外,鼠标是计算机中用得最多的输入设置。特别是Windows操作系统的普及,使鼠标成为了计算机一个必备的输入设备。本章将介绍在C语言中控制鼠标的方法。

  20.1 鼠标驱动程序 540

  20.1.1 通过中断访问鼠标驱动程序 540

  20.1.2 DJGPP开发环境对中断的支持 541

  20.2 鼠标库函数 541

  20.2.1 定义头文件mouse.h 541

  20.2.2 通过中断控制鼠标 542

  20.2.3 初始化鼠标 543

  20.2.4 复位鼠标 544

  20.2.5 移动鼠标 544

  20.2.6 显示鼠标指针 545

  20.2.7 隐藏鼠标指针 545

  20.2.8 获取按下的按键信息 546

  20.2.9 获取释放的按键信息 546

  20.2.10 获取鼠标状态信息 547

  20.2.11 获取鼠标指针位置信息 548

  20.2.12 保存鼠标指针位置 548

  20.2.13 捕获键盘或鼠标 549

  20.2.14 鼠标指针区域 550

  20.3 鼠标应用实例 551

  20.3.1 了解屏幕函数 551

  20.3.2 实例程序 552

  20.4 小结 554

  第3篇 C语言接口篇

  第21章 C语言与汇编的接口 556

  C语言的强大在于其和现代很多主流的编程语言都可以进行嵌套编程,各种编程语言都提供了和C语言的接口。从本章开始,将介绍目前主流的编程语言与C语言的接口方式及程序设计。

  21.1 AT&T汇编简介 556

  21.1.1 了解汇编的两种格式 556

  21.1.2 将C语言输出为汇编程序 558

  21.2 GCC内嵌汇编 559

  21.2.1 基本内联汇编 559

  21.2.2 扩展内联汇编 559

  21.2.3 内联汇编实例 563

  21.3 调用汇编程序 564

  21.3.1 C编译程序的调用约定 565

  21.3.2 C语言调用汇编的结构 566

  21.3.3 建立汇编函数的框架 567

  21.3.4 调用汇编函数 567

  21.4 在Visual C++中调用汇编 569

  21.4.1 内联汇编关键字 569

  21.4.2 在__asm块中使用汇编语言 570

  21.4.3 在__asm块中使用C/C++语言元素 571

  21.4.4 寄存器的使用 572

  21.4.5 跳转 572

  21.4.6 内联汇编调用函数实例 573

  21.4.7 内联汇编的优缺点 574

  21.5 小结 574

  第22章 C语言与LabVIEW的接口 575

  虚拟仪器软件设计是目前比较流行的程序设计方法,其以图形化语言LabVIEW为主。通过LabVIEW可以方便、快捷地创建各种控制及数据采集系统。但在遇到LabVIEW不易实现的功能时,可通过在LabVIEW中调用C实现。本章介绍在LabVIEW中调用C的方法和配置CIN节点的原则,并通过例子详细说明实现LabVIEW和C混合编程的过程。

  22.1 LabVIEW概述 575

  22.1.1 虚拟仪器概述 575

  22.1.2 虚拟仪器与传统仪器的对比 576

  22.1.3 虚拟仪器的优势 577

  22.1.4 什么是LabVIEW 577

  22.1.5 LabVIEW的运行机制 578

  22.2 CIN节点 580

  22.2.1 CIN概述 580

  22.2.2 支持在LabVIEW中调用的CIN的编译器 580

  22.2.3 CIN节点说明 581

  22.3 CIN节点的设计方法 582

  22.3.1 创建CIN节点的基本方法 582

  22.3.2 创建CIN节点 582

  22.3.3 创建.c源文件 583

  22.3.4 编译.c文件 585

  22.3.5 加载.lsb文件 587

  22.4 CIN节点的多线程运行 587

  22.5 小结 587

  第23章 C语言与MATLAB的接口 588

  MATLAB作为世界顶尖的数学应用软件,以其强大的工程计算、算法研究、工程绘图、应用程序开发、数据分析和动态仿真等功能,在各个领域发挥着越来越重要的作用。虽然MATLAB是一个完整的、功能齐全的编程环境,但在某些情况下,与外部环境的数据和程序的交互是非常必须而且有益的。而C语言是目前应用最广的编程语言,其功能丰富,使用灵活方便,目标程序效率高,既有高级语言的优点,又有低级语言的特点。本章将介绍C语言与MATLAB的接口。

  23.1 MATLAB简介 588

  23.1.1 MATLAB简介 588

  23.1.2 MATLAB的版本演化 589

  23.1.3 MATLAB的优势 591

  23.1.4 MATLAB常用工具箱 593

  23.1.5 C语言与MATLAB的接口 593

  23.2 MATLAB引擎 594

  23.2.1 MATLAB引擎简介 594

  23.2.2 MATLAB引擎的工作方式 595

  23.2.3 配置Visual C++编译器 595

  23.2.4 MATLAB引擎API详解 596

  23.2.5 数据类型mxArray的操作 598

  23.2.6 MATLAB引擎实例 600

  23.3 COM组件 603

  23.3.1 使用deploytool 603

  23.3.2 使用comtool 608

  23.4 MEX文件 611

  23.4.1 MATLAB编译器简介 611

  23.4.2 MATLAB编译器的安装与配置 612

  23.4.3 C语言的MEX文件的结构 614

  23.4.4 C语言的MEX文件实例 615

  23.4.5 MEX文件的优势 616

  23.4.6 常用的mex函数和mx函数 618

  23.4.7 C-MEX文件字符串操作实例 620

  23.5 使用Matcom 622

  23.6 小结 622

  第24章 C语言与JavaScript的接口 623

  JavaScript(简称JS)在浏览器中的应用几乎是尽人皆知的。实际上,JavaScript技术也可以使用在非浏览器应用程序当中,从而让应用程序具有自动的脚本功能。本章将介绍一种功能非常强大的JavaScript-C引擎,通过其可以使C程序能够解释执行JavaScript脚本。

  24.1 JavaScript简介 623

  24.1.1 什么是JavaScript 623

  24.1.2 JavaScript基本特点 624

  24.1.3 正确认识JavaScript 624

  24.1.4 JavaScript的基本概念 624

  24.1.5 JavaScript的运行环境 627

  24.2 JavaScript-C引擎 627

  24.2.1 JavaScript-C引擎的由来 627

  24.2.2 获取JavaScript-C引擎 628

  24.2.3 JavaScript-C引擎支持的版本 628

  24.2.4 运行JavaScript-C引擎的条件 628

  24.2.5 JavaScript-C引擎与应用程序的关系 629

  24.3 JavaScript-C引擎开发 631

  24.3.1 嵌入JavaScript-C引擎的必要条件 631

  24.3.2 管理一个运行时 632

  24.3.3 管理上下文 633

  24.3.4 初始化内置的和全局的JavaScript对象 634

  24.3.5 创建和初始化自定义对象 634

  24.3.6 JavaScript类型的处理 635

  24.4 在C/C++中执行JavaScript程序 636

  24.4.1 创建 JavaScript 运行时环境 636

  24.4.2 创建一个上下文 637

  24.4.3 初始化全局对象 637

  24.4.4 执行脚本 637

  24.4.5 清理脚本引擎 638

  24.5 JavaScript-C引擎的编译 638

  24.6 JavaScript-C引擎实例 639

  24.6.1 建立项目 639

  24.6.2 C源文件 640

  24.7 小结 642

  第25章 C语言硬件端口操作 643

  C语言既有高级语言的特点,又有低级语言的特点,这主要体现在C语言可以对硬件端口进行操作。在Turbo C中可以直接对并行接口进行操作,在其他开发环境中可以通过嵌入汇编语言或者使用相应的库文件实现并行接口操作。本章以计算机并行接口的操作为例,向读者展示C语言的硬件端口操作能力。

  25.1 并行端口简介 643

  25.1.1 认识计算机并口 643

  25.1.2 并口的引脚定义 643

  25.1.3 并口的工作模式 644

  25.1.4 并口寄存器定义 645

  25.1.5 并口开发调试工具包 646

  25.2 Turbo C下的并口操作 647

  25.2.1 端口操作函数 648

  25.2.2 并口读写实例 648

  25.3 其他C语言环境下的并口操作 649

  25.3.1 端口开发库函数 649

  25.3.2 并口读写实例 651

  25.4 小结 652

  第4篇 C语言扩展篇

  第26章 Linux下的C语言开发 654

  Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点及其超越Windows的安全性和稳定性。Linux的大部分代码都是用C语言开发的,在Linux操作系统中进行程序开发时首选程序设计语言为C语言。本章将简单介绍Linux,以及在Linux中使用C语言编写程序的方法。

  26.1 Linux简介 654

  26.2 Linux常用命令详解 655

  26.2.1 文件管理 656

  26.2.2 文件传输 659

  26.2.3 文档编辑 660

  26.2.4 系统管理 662

  26.2.5 系统设置 666

  26.2.6 网络通信 669

  26.2.7 磁盘管理 672

  26.2.8 磁盘维护 675

  26.2.9 备份压缩 677

  26.2.10 设备管理 678

  26.3 Linux C语言开发环境 679

  26.3.1 Linux C开发环境的构成 679

  26.3.2 代码编辑器 680

  26.3.3 GCC编译器 681

  26.4 Linux下的C程序开发 682

  26.4.1 在emacs中编译C程序 682

  26.4.2 在Linux中编写C程序 683

  26.5 小结 685

  第27章 单片机的C语言开发 686

  C语言是目前最为流行的编程语言,它的成功也延续到了其他领域。单片机便是一个重要的例子。在传统的单片机程序设计中,一般采用汇编语言实现。而后来,单片机的开发全面借鉴了C语言,从而进入了C语言开发单片机的时代。本章将介绍单片机的C语言开发及其与标准C语言的一些区别。

  27.1 单片机简介 686

  27.1.1 单片机的发展 686

  27.1.2 51系列单片机 687

  27.1.3 认识单片机 687

  27.1.4 单片机的结构 688

  27.1.5 单片机的应用领域 690

  27.2 单片机C语言简介 690

  27.2.1 单片机C语言和汇编语言的对比 691

  27.2.2 单片机C语言的特点 691

  27.3 单片机C语言的开发工具 691

  27.3.1 Keil μVision3简介 691

  27.3.2 Keil μVision3的系统需求 692

  27.3.3 Keil μVision3集成开发环境 692

  27.4 单片机C语言开发实例 693

  27.4.1 创建项目 693

  27.4.2 创建源文件 694

  27.4.3 编译项目 695

  27.4.4 仿真调试 696

  27.5 单片机C语言与标准C语言的区别 696

  27.5.1 标识符 696

  27.5.2 关键字 697

  27.5.3 数据类型 697

  27.5.4 中断函数 697

  27.5.5 存储类型 698

  27.5.6 扩展数据类型 700

  27.5.7 存储模式 702

  27.5.8 指针 703

  27.5.9 递归或可重入函数指定 704

  27.6 小结 705

  第28章 嵌入式系统C语言开发 706

  嵌入式系统(Embeded System)是目前最为流行的一门技术。嵌入式系统不仅和一般的PC机上的应用系统不同,就是针对不同的具体应用而设计的嵌入式系统之间差别也很大。这就导致嵌入式系统的开发与PC机不同。目前使用最多的便是基于Linux的嵌入式系统。本章将介绍嵌入式Linux系统下的C语言开发工具和开发流程。

  28.1 嵌入式系统简介 706

  28.1.1 什么是嵌入式系统 706

  28.1.2 嵌入式系统的基本结构 707

  28.1.3 嵌入式系统的特点 707

  28.1.4 嵌入式系统中的处理器 707

  28.1.5 嵌入式操作系统 708

  28.1.6 嵌入式系统中的软件系统 709

  28.2 嵌入式Linux C语言开发工具 710

  28.2.1 编辑器VIM 710

  28.2.2 编译器GCC 715

  28.2.3 GCC的常用编译选项 717

  28.2.4 调试器GDB 720

  28.2.5 工程管理 MAKE 725

  28.3 集成开发环境Eclipse 730

  28.3.1 Eclipse的安装 730

  28.3.2 Eclipse的界面简介 732

  28.3.3 创建Hello项目 733

  28.3.4 调试Hello项目 735

  28.4 嵌入式C语言开发流程 735

  28.4.1 命令行下的开发流程 735

  28.4.2 基于Eclipse的开发流程 739

  28.5 小结 743

  第29章 基于C语言的高性能并行GPU编程 744

  普通的C语言程序运行在CPU上,都是顺序执行的语句。目前,并行计算是高性能计算的一个方面。如何将C语言的简单易学、功能强大的特点与并行计算结合起来是一个研究方向。现在,普通用户可以通过显卡GPU运行C程序实现并行计算,提供程序的计算性能。本章将介绍如何使用C语言和NVIDIA的GPU进行并行编程。

  29.1 GPU概述 744

  29.1.1 GPU和CPU 744

  29.1.2 GPU的作用 744

  29.1.3 GPU的优势 745

  29.1.4 GPU的供应商 747

  29.1.5 GPU的开发环境 748

  29.2 基于C语言的CUDA 748

  29.2.1 什么是CUDA 748

  29.2.2 CUDA的发展历史 749

  29.2.3 CUDA基本构架 750

  29.2.4 CUDA编程模型 752

  29.2.5 CUDA硬件实现 753

  29.3 CUDA应用程序编程接口(API) 754

  29.3.1 CUDA编程接口的构成 754

  29.3.2 CUDA对C语言的扩展 754

  29.3.3 NVCC编译 756

  29.3.4 公共运行时(Runtime)组件 757

  29.3.5 设备运行时组件 758

  29.3.6 主机运行时组件 761

  29.3.7 CUDA运行时API详解 762

  29.3.8 CUDA驱动程序API详解 772

  29.4 在Visual Studio中使用CUDA 784

  29.4.1 安装CUDA 784

  29.4.2 配置CUDA NVCC 786

  29.4.3 使用第三方工具配置CUDA NVCC 789

  29.5 CUDA并行编程实例 790

  29.5.1 初始化CUDA实例 791

  29.5.2 GPU运算实例 792

  29.6 小结 794

发表评论

评论列表