新書推薦:
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
《
史铁生:听风八百遍,才知是人间(2)
》
售價:NT$
254.0
《
量子网络的构建与应用
》
售價:NT$
500.0
《
拍电影的热知识:126部影片里的创作技巧(全彩插图版)
》
售價:NT$
500.0
《
大唐名城:长安风华冠天下
》
售價:NT$
398.0
《
情绪传染(当代西方社会心理学名著译丛)
》
售價:NT$
403.0
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:NT$
1100.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:NT$
435.0
|
編輯推薦: |
本书内容来自一线教师的多年教学成果,同时作者有多年的企业从业实际工作经验,所以教材定位准,内容实用,书中有大量的实用案例,非常适合学生和从业人员学习。
|
內容簡介: |
本书以“学完C语言之后知道能做什么”为编写目标,共包括9章,分别是Linux C语言程序设计、C语言基础Ⅰ、C语言基础Ⅱ、链表、C标准库、Linux系统调用、Socket编程、Pthreads编程和GTK图形界面编程。其中,C语言基础Ⅰ、C语言基础Ⅱ、C标准库和Linux系统调用为本书最基础、最重要的四章,全面介绍了标准C语言的基本语法和Linux系统调用编程。其他章节告诉读者C语言具体能做什么。本书坚守“空谈无用,给我看代码”(Linux之父Linus Torvalds所言)的信条,通过正确无误的示例代码向读者展示C语言的具体用法。本书内容实用、结构清晰、图文并茂,力求让读者可以饶有兴趣地学习Linux C语言编程。 本书适合作为高等学校各专业的C语言程序设计课程教材,也可作为从事计算机相关工作的科技人员、计算机爱好者及各类自学人员的参考书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
|
關於作者: |
张同光,副教授,计算机博士,毕业于北京邮电大学。主要从事计算机方面的教学及科研工作,发表SCI、EI等学术论文30余篇,主编教材近20本,主持或参与省部级以上项目6个。对Linux操作系统有深入且全面的研究和应用。使用C/C 等语言开发过若干个横向项目。讲授过的计算机专业课程有:《Linux 0.11内核分析》、《Linux操作系统》、《嵌入式软件开发基础》、《Linux C编程》、《Linux网络服务与编程》、《Linux驱动程序设计》、《嵌入式软件开发高级》、《软件工程》、《C 程序设计》、《微机原理》、《计算机网络原理》、《计算机专业英语》、《操作系统原理》、《离散数学》、《计算机组成原理》、《单片机原理》、《C程序设计》、《数据结构》、《汇编语言》、《网络安全技术》等。
|
目錄:
|
第1章Linux C语言程序设计1
1.1C语言1
1.1.1C语言简介1
1.1.2C语言发展历史2
1.1.3C语言特点2
1.2Linux简介3
1.3Linux C语言程序设计简介4
1.3.1Linux应用编程、系统编程和内核编程4
1.3.2Linux图形界面编程4
1.4Linux C语言编程环境5
1.4.1安装Ubuntu Linux虚拟机5
1.4.2gedit、vim和nano5
1.4.3C语言编译器及集成开发环境6
1.4.4编写Hello World程序7
1.5使用gcc编译程序7
1.6使用make和Makefile构建程序9
1.7使用cmake和CMakeLists.txt构建程序15
1.8完整的编译过程17
1.9习题18第2章C语言基础Ⅰ21
2.1数据21
2.1.1数据类型21
2.1.2常量23
2.1.3变量和标识符25
2.1.4数据类型转换26
2.1.5转义字符(转义序列)28
2.2运算符29
2.2.1运算符和表达式29
2.2.2算术运算312.2.3赋值运算32
2.2.4关系运算32
2.2.5逻辑运算符33
2.2.6条件运算符33
2.2.7逗号运算符34
2.2.8sizeof运算符与typedef类型声明34
2.2.9位运算35
2.2.10复合赋值运算符36
2.3结构化程序设计37
2.3.1顺序结构37
2.3.2分支结构38
2.3.3循环结构40
2.4输入/输出44
2.4.1标准输出函数printf44
2.4.2标准输入函数scanf47
2.5数组49
2.5.1一维数组49
2.5.2二维数组50
2.5.3一维字符数组51
2.5.4一维字符数组的输入/输出52
2.5.5字符串处理函数53
2.5.6二维字符数组55
2.6习题56第3章C语言基础Ⅱ60
3.1函数60
3.1.1函数定义和声明60
3.1.2函数调用及参数传递61
3.1.3函数的嵌套与递归65
3.1.4回调函数66
3.1.5return语句67
3.1.6全局变量、局部变量和作用域67
3.1.7变量的存储类别及生存期68
3.1.8内部函数和外部函数70
3.2预处理71
3.2.1预处理的步骤71
3.2.2宏定义和内联函数72
3.2.3条件编译74
3.2.4文件包含74
3.3指针76
3.3.1指针的基本运算76
3.3.2指针与数组80
3.3.3指针与const限定符82
3.3.4指针与字符串84
3.3.5指针函数与函数指针84
3.3.6再讲回调函数85
3.3.7可变参数87
3.3.8二级指针与多级指针89
3.3.9指针数组和数组指针90
3.3.10动态内存管理91
3.4结构体、共用体和枚举93
3.4.1结构体93
3.4.2位域94
3.4.3共用体95
3.4.4枚举96
3.5零长数组、变长数组和动态数组98
3.6编码风格与缩进工具indent100
3.7习题102第4章链表106
4.1单向链表106
4.1.1单链表结构与链表结点类型106
4.1.2创建单链表107
4.1.3插入结点108
4.1.4删除结点109
4.1.5读取结点109
4.1.6查找结点110
4.1.7打印单链表110
4.1.8逆转单链表111
4.1.9构建单循环链表111
4.1.10销毁单链表111
4.1.11主函数及测试结果112
4.2双向链表113
4.2.1双链表结构与链表结点类型113
4.2.2创建双链表114
4.2.3插入结点115
4.2.4删除结点116
4.2.5读取结点116
4.2.6查找结点117
4.2.7打印双链表117
4.2.8逆转双链表118
4.2.9构建双循环链表118
4.2.10销毁双循环链表119
4.2.11主函数及测试结果119
4.3内核链表120
4.3.1list_head120
4.3.2offsetof、container_of和list_entry121
4.3.3链表初始化122
4.3.4插入结点122
4.3.5删除结点123
4.3.6替换结点123
4.3.7移动结点124
4.3.8判断函数124
4.3.9合并结点125
4.3.10遍历链表126
4.3.11用户空间使用内核链表126
4.4习题128第5章C标准库130
5.1C语言标准和glibc130
5.2标准输入/输出函数库(stdio.h)132
5.2.1fopen/fclose132
5.2.2stdin/stdout/stderr134
5.2.3errno与perror函数135
5.2.4以字节为单位的I/O函数136
5.2.5以字符串为单位的I/O函数138
5.2.6以记录为单位的I/O函数139
5.2.7格式化读写文件141
5.2.8操作读写位置的函数142
5.2.9FILE结构体及I/O缓冲区144
5.3标准工具函数库(stdlib.h)147
5.3.1动态内存分配与释放147
5.3.2整数算术149
5.3.3随机数150
5.3.4数值字符串转换151
5.3.5宽字符和多字节字符转换152
5.4字符串处理函数库(string.h)156
5.4.1初始化字符串156
5.4.2取字符串的长度157
5.4.3复制字符串157
5.4.4比较字符串159
5.4.5搜索字符串160
5.4.6连接字符串161
5.4.7分割字符串161
5.4.8本地函数163
5.5字符处理函数库(ctype.h)165
5.6数学函数库(math.h)167
5.7学生信息管理系统的设计与实现169
5.7.1系统设计要求170
5.7.2系统设计170
5.7.3函数设计170
5.7.4参考程序173
5.7.5运行结果178
5.8习题179第6章Linux系统调用182
6.1C库函数和Linux系统调用182
6.2进程管理184
6.3进程间通信186
6.4exec函数族189
6.5文件管理192
6.6习题199第7章Socket编程201
7.1Socket基本概念201
7.1.1Socket简介201
7.1.2网络字节序与主机字节序202
7.1.3Socket地址结构203
7.1.4地址转换函数205
7.1.5C/S架构206
7.2基于TCP的网络程序207
7.2.1简单C/S应用程序的设计207
7.2.2交互式C/S应用程序的设计213
7.2.3简单聊天室应用程序的设计(select)215
7.2.4聊天室应用程序的设计(select)220
7.2.5简单C/S应用程序的设计(epoll)228
7.3基于UDP的网络程序233
7.3.1简单C/S应用程序的设计233
7.3.2简单聊天室应用程序的设计236
7.4原始套接字编程239
7.5UDS242
7.6习题244第8章Pthreads编程246
8.1Pthreads概述246
8.1.1Linux进程和线程246
8.1.2Linux线程模型247
8.1.3Pthreads简介248
8.2Pthreads函数248
8.2.1创建线程248
8.2.2线程同步与互斥252
8.3Pthreads编程示例255
8.3.1读者写者255
8.3.2生产者消费者258
8.3.3哲学家就餐259
8.4习题261第9章GTK图形界面编程263
9.1GTK简介263
9.2GLib简介264
9.3信号和回调函数264
9.4GTK控件267
9.4.1容器控件267
9.4.2非容器控件267
9.5GTK图形界面编程268
9.5.1Hello World268
9.5.2GtkGrid270
9.5.3Custom Drawing271
9.5.4用GtkBuilder创建界面274
9.5.5Cambalache277
9.6GTK图形界面聊天室280
9.6.1聊天室服务器端281
9.6.2聊天室客户端285
9.6.3测试294
9.7习题295附录ASCII码表297参考文献298
|
內容試閱:
|
C语言是目前非常流行的高级程序设计语言之一,是许多计算机专业人员和计算机爱好者学习程序设计的首选语言。但是,许多学过C语言的读者在学习C语言之前以及学习过程中经常会问: “学习C语言能做什么?”甚至有人学完C语言后感慨: “学完C语言仍然不知道能做什么。”其实,编者认为学习C语言有两个目标: 第一,为学习其他编程语言打下坚实的基础。因为计算机编程语言都是相通的,学好C语言可以为学习其他高级程序设计语言提供帮助,本书第2、3、5、6章可以达到该目标。第二,使用C语言真正开发有实际意义的程序,这正是本书所追求的目标。要使用C语言开发有实际意义的程序,就要清楚C语言的真正应用场景。目前市面上大多数操作系统是用C语言编写的;如编译器、数据库、虚拟机、多媒体库、图形库等很多基础软件是用C语言实现的;如Lua、Python脚本语言等很多流行的编程语言也是用C语言实现的。在嵌入式系统开发中,比如固件、BSP、内核驱动等,除了少量的汇编代码外,大部分是用C语言开发的;互联网中的许多服务器程序也是用C语言开发的。总之,在整个计算机软件世界中,C语言发挥着中流砥柱的作用。
读者可能对Linux并不熟悉,但是Linux早已深刻影响着我们生活的方方面面,从超级计算机、巨型机,到手机(Android),再到各种家电和嵌入式设备,内部都运行着Linux。另外,Linux支撑起了整个因特网。C语言和Linux操作系统有着密不可分的“血缘”关系,因此本书的主要目标是帮助读者掌握基于Linux的各种软件的C语言开发方法,为读者以后步入广阔的Linux世界打下坚实的基础。本书所有示例代码都是正确无误的。之前没有接触过Linux操作系统的读者,可以根据本书的第一个视频安装Linux虚拟机,搭建好Linux C语言编程环境。
本书提供配套课件、教学大纲和习题参考答案等多种教学资源,还提供了70多个教学视频,读者在学习的过程中,扫描教学视频二维码可以观看视频。
本书由新乡学院教师、北京邮电大学计算机专业博士张同光担任主编,由河南师范大学刘春红、新乡学院田乔梅、电能易购(北京)科技有限公司武晓龙、新乡学院宋丽丽担任副主编,参加编写的人员还有郑州轻工业大学陈明。其中,张同光编写第1~4章,刘春红、武晓龙和宋丽丽共同编写第5章、第7章、第8章的8.2节和第9章,田乔梅编写第6章,陈明编写第8章的8.1节、8.3节、8.4节和附录。全书最后由张同光统稿和定稿。
本书得到了河南省高等教育教学改革研究与实践重点项目(No.2021SJGLX106)、河南省科技攻关项目(No.202102210146)、网络与交换技术国家重点实验室开放课题(SKLNST2020101)以及高效能服务器和存储技术国家重点实验室的支持,在此表示感谢。
由于编者水平有限,书中欠妥之处敬请广大读者批评指正。
编者
2023年3月
|
|