0基础 三个月掌握C语言(11)

字符函数和字符串函数

为了方便操作字符和字符串 C语言标准库中提供了一系列库函数 接下来我们学习一下这些函数

字符分类函数

C语言提供了一系列用于字符分类的函数,这些函数定义在ctype.h头文件中。这些函数通常用于检查字符是否属于特定的类别,例如大写字母、小写字母、数字等。以下是一些常用的字符分类函数:

1.isalpha(int c): 检查字符c是否为字母(大写或小写)。

2.isupper(int c): 检查字符c是否为大写字母。

3.islower(int c): 检查字符c是否为小写字母。

4.isdigit(int c): 检查字符c是否为数字(0-9)。

5.isalnum(int c): 检查字符c是否为字母或数字。

6.isxdigit(int c): 检查字符c是否为十六进制数字(0-9,a-f,A-F)。

7.isspace(int c): 检查字符c是否为空白字符(例如空格、制表符、换行符等)。

8.ispunct(int c): 检查字符c是否为标点符号。

9.isgraph(int c): 检查字符c是否为图形字符(即非空格字符)。

10.isprint(int c): 检查字符c是否为可打印字符(包括图形字符和空格字符)。

11.iscntrl(int c): 检查字符c是否为控制字符(例如回车符、换行符等)。

这些函数通常接受一个int类型的参数,这是因为char类型在C语言中实际上是一个小的int类型。如果字符属于指定的类别  这些函数返回一个非零值(通常是1) 否则返回0。

这些函数的使⽤⽅法⾮常类似,我们就讲解⼀个函数的事情,其他的⾮常类似:

比如 函数islower 如果它的参数是小写字母 就返回非0的整数 如果不是小写字母 就返回0

练习:

写⼀个代码,将字符串中的⼩写字⺟转⼤写,其他字符不变。

当然我们没学上述字符分类函数也能做出来 只需要让小写字母-32即可

现在我们用字符分类函数来做

字符转换函数

C语⾔提供了2个字符转换函数: 

int tolower(int c);//将参数传进去的大写字母转小写

int toupper(int c);//将参数传进去的小写字母转大写

之前的代码,我们将⼩写转⼤写,是-32完成的效果,有了转换函数,就可以直接使⽤ tolower函数。

长度不受限制的字符串函数

strlen的使用和模拟实现

函数原型:

字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前⾯出现的字符个数(不包含'\0' )。

参数指向的字符串必须要以 '\0' 结束。

strlen的使⽤需要包含头⽂件#include<string.h> 

注意函数的返回值为 size_t,是⽆符号的(易错)

两个size_t(无符号的数)相减得到的结果仍然为无符号数 所以输出>

我们要是强转为int类型 即可得到想要的答案

学会strlen函数的模拟实现 

我们在之前也有学过

1.计数器的方式

2.指针-指针的方式

3.递归的方式(不创建临时变量count)

my_strlen(abcdedg)

1+my_strlen(bcdedg)

1+ (1+my_strlen(cdedg))

strcpy的使用和模拟实现

函数原型:

源字符串必须以 '\0' 结束。

会将源字符串中的 '\0' 拷⻉到⽬标空间。

⽬标空间必须⾜够⼤,以确保能存放源字符串。

⽬标空间必须可修改。(如果目标空间为常量字符串的时候 无法修改)

(如 char* arr2=xxxxxxxxx;)这里就无法修改目标空间arr2了

看下列代码:

接下来我们再给一段代码来看

看到调试的结果 我们就知道strcpy会将源字符串的’\0’拷贝到目标文件

strcpy模拟实现 

我们可以有一个更加简单的代码

我们模拟函数 尽可能去和原函数相像

strcat的使用和模拟实现

strcat函数的功能是拼接一个字符串到目标空间

函数原型:

源字符串必须以'\0'结束

⽬标字符串中也得有\0 ,否则没办法知道追加从哪⾥开始

⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容

⽬标空间必须可修改

上代码:

strcat函数模拟实现

当然我们main函数内的my_strcat也可以修改一下  改成:

strcat可以在自己后面追加个自己吗

这里的while是死循环  造成越界访问 程序崩溃

因为这里的dest和src指针都指向arr1 当我们的dest找到了\0 后  此时src指向数组首元素 然后在dest所指的位置接上src位置上的字符   我们会发现src不会遇到\0  因为\0位置都被覆盖了 所以该循环是个死循环

如果遇到自己给自己追加 我们尽量不用strcat函数

strcmp的使用和模拟实现

函数原型:

标准规定:

第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字

第⼀个字符串等于第⼆个字符串,则返回0

第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字

那么如何判断两个字符串? ⽐较两个字符串中对应位置上字符ASCII码值的⼤⼩。

strcmp的使用

strcmp的模拟实现

当然我们也可以有另一种方式来比较字符串

这里的return *str1-*str2  当str1大于str2时就返回大于0的数

具体的数根据对应的字符的ASCII码的差值  这里的14就是q和c的ASCII码的差值

长度受限制的字符串函数

strncpy函数的使用

函数原型:

1.从源字符串拷贝num个字符到目标空间

2.如果源字符串的长度小于num  则拷贝完字符串之后 在目标的后边追加0  直到num个

当然如果我们这里的num值为8时 我们会在后面加两个’\0’来补空缺位置

strncat函数的使用

函数原型:

strncat函数的用途是将一个字符串(源字符串)的内容连接到另一个字符串(目标字符串)的末尾,但连接的字符数最多为指定的数量。

其中,destination(接下来用dest表示)是目标字符串,source(下面用src表示)是源字符串,num是要连接的字符数。

在连接过程中,strncat函数会检查src中的字符数。如果src中的字符数大于num,那么strncat只将src的前num个字符附加在dest末尾;如果src中的字符数小于num,那么strncat会将src的所有字符附加在dest末尾。

值得注意的是,dest需要有足够的空间来容纳要拷贝的字符串。另外,strncat函数会先将dest字符串最后的’\0’覆盖掉,然后在字符追加完成后,再追加’\0’。

注意:我们这边追加的’\0’和strncpy的补\0不一致 当然我们只要知道末尾会有\0就ok了

长度不受限制的字符串函数和长度受限制的字符串函数

长度受限制的字符串函数相对安全(并不是绝对安全)

例如上述代码 strcpy不会管会不会越界 会直接进行拷贝操作

strncmp的使用

函数原型:

比较str1和str2的前num个字符 如果相等就继续往后比较 最多比较num个字母 如果提前发现不一样 就提前结束 大的字符所在的字符串大于另外一个 如果num个字符都相等 就是相等 返回0

strstr的使用和模拟实现

函数原型:

在一个字符串中 查找另一个字符串

函数返回字符串str2在字符串str1中第一次出现的位置

字符串的比较匹配不包含\0字符  以\0作为结束标志

举例:

strstr的模拟实现

接下来我们来讲解在模拟实现中需要考虑的问题

1.最简单的情况

如str1=abcdef  str2=bcd

这里str1中并没有重复元素 当我们找到b 接着向下比较 直到找到str2的所有元素 最后输出bcdef

2.复杂情况(为什么需要cur指针)

如str1=abbbcdef  str2=bcd

这里就比较复杂了 当我们找到第一个b时 我们再向后找3个元素时 发现和str2不相等  如果没有cur指针指向移动前的所在位置(这里是第一个b所在位置) 此时s1已经指向str1中最后一个b 而s2指向str2中的d 这样我们就会导致无法正确查询在str1是否有和str2字符串相同的片段

3.如果str1=abc  str2=abc

这里我们知道字符串中有\0来结束 当s1和s2指向\0时 就已经结束了 如果接着向下搜寻 会导致越界访问 所以我的while循环里需要判断s1和s2是否为\0

4.注意这里的强制类型转换

这里有两种原因进行强制类型转换

首先是因为函数的返回值类型为char*

其次因为刚开始 我们设置成const char* 这样就无法对字符串进行操作了 这时强制类型转换是为了字符串的改变

5.特殊情况:当*cur找不到相同字符串时 即为空

strtok函数的使用

函数原型:

sep参数指向一个字符串 定义了用作分隔符的字符集合(该字符串是分隔符的集合)

第一个参数指向一个字符串 它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记

strtok函数找到str中的下一个标记 并将其用\0结尾 返回一个指向这个标记的指针(注:strtok函数会改变被操作的字符串 所以被strtok函数切分的字符串一般都是临时拷贝的内容并且可修改)

strtok函数的第一个参数不为NULL  函数将找到str中第一个标记  strtok函数将保存它在字符串中的位置

strtok函数的第一个参数为NULL  函数将在同一个字符串中被保存的位置开始 查找下一个标记

如果字符串中不存在更多的标记 则返回NULL指针

接下来我们上代码来解释

strtok函数会把@和.变为\0  第一个参数为arr2(不为NULL)  函数保存第一个标记所在字符串中的位置 如果再次调用时 我们要传NULL  函数将在同一个字符中被保存的位置开始 查找下一标记

这里我们可能就会想 这函数这么复杂 有什么用 其实我们上述代码只是为了让大家理解该函数 接着我们上一个代码 让大家感受一下strtok函数

这里仅仅一个for循环就把我们之前写的那么多行代码给替换了 所以每个函数只要我们会用 它就是有用的 但该函数用的还是比较少 大家理解 掌握即可

strerror的使用

函数原型:

strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来

在不同的系统和C语言标准库的实现中都规定了一些错误码  一般是放在errno.h这个头文件中说明的  C语言程序启动的时候就会使用一个全局的变量errno来记录程序的当前错误码  只不过程序启动的时候errno是0  表示没有错误  当我们在使用标准库中的函数的时候发生了某种错误  就会将对应的错误码  存放在errno中 每一个错误码都有对应的错误信息的  strerror函数就可以将错误对应的错误信息字符串的地址返回

  • 37
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
计算机应用基础计算机基础知识 目 录 课程说明 项目1 掌握 计算机 基础知识 项目2 应用Win 7 操作系统(暂无) 项目3 应用 文字 处理软件 Word2010(暂无) 项目4 应用 电子 表格软件 Excel 2010(暂无) 项目5 应用 演示文 稿制作软件 powerPoint 2010(暂无) 项目6 掌握 计算机 网络基础 知识 计分方式:NCRE考试实行百分制计分,但以等第分数通知考生成绩。等第分数分为"不及格"、"及格"、"良好"、"优秀"四等。考试成绩在"及格"以上者,由教育部考试中心发合格证书。考试成绩为"优秀"的,合格证书上会注明"优秀"字样。 五、了解计算机的发展趋势 PC机名称一般以CPU名称和CPU的主频来命名。 URL并不仅仅描述HTTP协议,对其他各种不同的常见协议URL都能描述。 对来历不明的网址或是邮件都不要轻易打开。 Internet起源于美国ARPAnet。 人工智能就是要使计算机能够模拟人的高级思维活动。 一、认识Microsoft Outlook 2010 环境湿度大于等于20%小于等于80%。 下列各数中,最大的一个数是 考试题型:共六大题,分别是 计算机应用基础计算机基础知识 软件和硬件之间是相辅相成的,缺一不可。 转换规则:按其对应关系,按顺序直接写出即可。 网址是网络地址的简称,也叫统一资源定位器URL(Uniform Resource Locator)。 概念:IP地址是指Internet中不同计算机的相互通信必须具有相应的地址标识。 级别 科目名称 科目代码 考试时间 考试方式 一级 计算机基础及WPS Office应用 14 90分钟 无纸化 计算机基础及MS Office应用 15 90分钟 无纸化 计算机基础及Photoshop应用 16 90分钟 无纸化 二级 C语言程序设计 24 120分钟 无纸化 VB语言程序设计 26 120分钟 无纸化 VFP数据库程序设计 27 120分钟 无纸化 Java语言程序设计 28 120分钟 无纸化 Access数据库程序设计 29 120分钟 无纸化 C++语言程序设计 61 120分钟 无纸化 MySQL数据库程序设计 63 120分钟 无纸化 Web程序设计 64 120分钟 无纸化 MS Office高级应用 65 120分钟 无纸化 三级 网络技术 35 120分钟 无纸化 数据库技术 36 120分钟 无纸化 软件测试技术 37 120分钟 无纸化 信息安全技术 38 120分钟 无纸化 嵌入式系统开发技术 39 120分钟 无纸化 四级 网络工程师 41 90分钟 无纸化 数据库工程师 42 90分钟 无纸化 软件测试工程师 43 90分钟 无纸化 信息安全工程师 44 90分钟 无纸化 嵌入式系统开发工程师 45 90分钟 无纸化 NCRE级别/科目设置如下(2013版) 一级:操作技能级。考核计算机基础知识及计算机基本操作能力,包括Office办公软件、图形图像软件。 二级:程序设计/办公软件高级应用级。考核内容包括计算机语言与基础程序设计能力,要求参试者掌握一门计算机语言,可选类别有高级语言程序设计类、数据库程序设计类、WEB程序设计类等;二级还包括办公软件高级应用能力,要求参试者具有计算机应用知识及MS Office办公软件的高级应用能力,能够在实际办公环境中开展具体应用。 三级:工程师预备级。三级证书面向已持有二级相关证书的考生,考核面向应用、面向职业的岗位专业技能。 四级:工程师级。四级证书面向已持有三级相关证书的考生,考核计算机专业课程,是面向应用、面向职业的工程师岗位证书。 软件环境 :Windows 7操作系统,Microsoft Office 2010办公软件。 考试时间:90分钟 考试题型:共六大题,分别是 (1) 选择题(计算机基础知识和网络的基本知识)。(20 分) (2) Windows 操作系统的使用。(10 分) (3) Word 操作。(25 分) (4) Excel 操作。(20 分) (5) PowerPoint 操作。(15 分) (6) 浏览器(IE)的简单使用和电子邮件收发。(10 分) 计算机基础及MS Office应用 考试性质: 经国家教委(现教育部)批准,由教育部考试中心举办,面向社会,用于考查应试人员计算机应用知识与能力的全国性计算机水平考试体系。 考试时间:NCRE考试采用全国统一命题,统一考试的形式。所有科目每年开考两次。一般为3倒数第一个周六和9倒数第二个周六,考试持续5天。 全国计算机等级考试(NCRE) 课程性质: 计算机基础课,入门课。 重要性:后续计算机课程的先行课。 学时:授课32学时,上机32学时。 考试:参加NCRE一级计算机基
1 课程设计报告 课程名称 单片机的 c 语言程序设计 设计题目 交通灯 学生姓名 学 号 xxxxxxxxxxxx 专业班级 xxxxxxxxxxxx 指导教师 xxxx 年 xx xx 日 2 目录 一.前言…………………………………………………………3 二.功能概述· · · · · ·……………………………………………3 三.设计思路……………………………………………………3 四.硬件介绍……………………………………………………4 五.软件程序设计………………………………………………7 六.电路图及仿真实现………·………………………………10 七.总结…………………………………………………………11 八.源程序………………………………………………………12 参考文献…………………………………………………………14 3 一.前言 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控 制检测技术日益更新。 在实时检测和自动控制的单片机应用系统中,单片机往往 作为一个核心部件来使用, 仅单片机方面知识是不够的,还应根据具体硬件结构 软硬件结合,加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什 么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。 交通信号灯控制 方式很多,在学习了单片机的有关知识之后,运用相关知识来设计完成交通信号 灯。 二.功能概述 2.1 设计任务:交通灯的硬件和软件设计 2.2 设计目的 1.进一步熟悉和掌握单片机的结构和工作原理。 2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 3.通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解 有关电路参数的计算方法。 4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 5.通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相应 工作打下基础。 三.设计思路 交通灯的变化规律 按照常规我们假设一个十字路口为东西南北走向。初始状态为状态 1,南北 方向绿灯通车,东西方向红灯。经过过一段时间(25S)转换状态 2,南北方向 绿灯闪几次转亮黄灯,延时 5S,东西方向仍然红灯。再转换到状态 3,东西方向 绿灯通车,南北方向红灯。过一段时间(25S)转换到状态 4,东西方向绿灯闪 几次转亮黄等,延时 5S,南北方向仍然红灯。最后循环至南北绿灯,东西红灯。 4 在这些状态下,有时钟倒数计时。 四.硬件介绍 基础知识 交通灯控制器实例主要使用了 89C51 单片机的定时器/计数器, 基础知识主 要包括交通灯的变化规律、 定时器/计数器的概念、定时器/计数器的相关寄存 器、定时器/计数器的 4 种工作方式、以及定时器/计数器的变成。 4.1 定时器/计数器 定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控 制器实例来演示定时器的使用,并复习如何使用散转程序。 首先介绍交通灯以及定时器/计数器的基础知识, 接着介绍本实例的硬件电路构 成, 然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与 注意点。 4.2 定时器/计数器的概念 89C51 单片机内有两个可编程的定时器/计数器 T0、T1。 当定时器/计数器用作"定时器"时,每经过 1 个机器周期(12 个时钟周期) , 计数器加 1。 当定时器/计数器用作 "计数器" 时, 计数器在对应的外部输入管脚 (T0 为 P3.4 引脚,T1 为 P3.5 引脚)上每发生一次 1 到 0 的跳变时加 1。使用"计数器"功 能时, 外部输入每个机器周期被采样一次。当某一周期管脚状态采样为高电平而 下一周期采样为低电平时,计数器加 1。由于检测下降沿跳变需要两个机器周期 (24 个时钟周期)的时间,所以技术频率最大值只能为时钟周期的 1/24。计数 器对外部输入信号的占空比并无限制, 但为了保证给定的电平信号在其改变之前 至少被采样一次,外部输入信号必须至少保持一个完整的机器周期。 4.3 定时器/计数器的相关寄存器 与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD) 、定 时器/计数器控制寄存器(TCON) 。TCON 已经在 2.5 节受控输出实例中介绍过, 因此,在本例中主要介绍 TMOD 寄存器。 定时器/计数器工作方式寄存器(TMOD) ,字节地址 89H,不可进行位寻址。 5 定时器/计数器工作方式寄存器(TMOD)的 8 位分为两组,高 4 位控制 T1,低 4 位控制 T0。TMOD 每一位的功能如下。 GATE:门控位。 GATE=0,仅由运行控制位 TRX(X=0,1)=1 来启动定时器/计数器运行; GATE=1,由运行控制位 TRX(X=0,1)=1 和外
商洛职业技术学院《计算机应用基础》课程建设计划 一、现有基础 (一)课程类型与定位 《计算机应用基础》课程是高职高专职业教育的一门重要课程,是全院各专业教学的必修公共课程,是学生基本计算机操作技能的基础课程,影响力大、受益面广。 《计算机应用基础》课也是为后续课程和专业学习奠定坚实的计算机技能基础。课程具有很强的实践性,对于培养学生的实践能力、创新能力、分析和解决问题的能力都起到十分重要的作用。 (二)已有资源 1.硬件资源 学院现有计算机机房六个。2011年组建机房四个,其中二个机房为联想品牌电脑,二个机房为戴尔品牌电脑。2017年组建机房一个,为同方品牌电脑。2019年新组建机房一个,为联想品牌电脑。现有电脑共330台。 机房的主要用途有: (1)供学院非计算机专业类学生《计算机应用基础》、《多媒体课件制作》、《C语言程序设计》、《单片机》、《AUTOCAD》、《文献检索》等课程的上课和上机实践。 (2)供学院培训中心承担的各类计算机培训项目的上课和上机实践。 (3)供学院承接的各类上机考试项目的使用。 2.软件资源 《计算机应用基础》课程教学团队设计制作了100多个与教材对应的微课视频,设计了近50个适合学生上机练习的素材文件和模板,制作了与教材章节对应的PPT演示文稿,编写了300多道测验试题等,这些资料为学生平时的线上学习提供了丰富的资源,有力的促进了该课程的教学效果。 (三)教学团队 该课程拥有一支相对合理的教学团队,具体情况如下表: 表1 课程教学团队 序号 姓名 职称 学历(学位) 双师素质 教师 1 李长生 副教授 研究生(硕士) 是 2 秦宏强 高级工程师 本科(硕士) 是 3 李晓燕 副教授 本科(学士) 是 4 任群霞 讲师 本科(学士) 否 5 朱欣欣 讲师 本科(学士) 否 (四)教改情况 本课程自开课以来,积极参加学院各种教学改革,教学过程中引入基于工作任务的项目教学法,采用理论实践一体化等方式组织教学,后来实践推行基于翻转课堂的线上线下混合式教学模式,教学中采用各种信息化教学手段,使用蓝墨云班课APP软件辅助教学,很大程度上激发了学生学习的积极性与主动性,激活的课堂气氛,点燃了学生的学习热情,显著增强了教学效果。 (五)已取得的成果 通过教学方法改革,充分激发了学生的积极性和学习的主动性; 团队教师在不断的教学探索、教学经验积累中,积极参加院级或省级教学科研和各类教学比赛, 2018年9,李晓燕老师主持的院级重点课题《MOOC平台下商洛职业技术学院微课程资源库建设》顺利结题;2015年10,秦宏强老师获得学院课堂教学大赛二等奖;2017年4,秦宏强老师获得陕西省高校微课大赛二等奖,2018年7,秦宏强老师获得陕西省高校信息化大赛三等奖;2018年8,秦宏强老师获得陕西省高校微课大赛三等奖;2019年3,李长生和李晓燕老师带队参加陕西省高职院校大学生技能大赛《计算机 络安全》赛项获得三等奖。 建设目标 (一)总目标 本课程包括键盘指法实践、中英文打字实践、Windos7操作系统常用操作实践、WORD2010文字处理软件使用、EXCEL2010电子表格软件使用、POWERPOINT2010演示文稿软件使用、多媒体技术应用、计算机网络等教学模块。 课程内容的设计考虑"工作"和"学习"高度融合,形成一个有机整体,即工学结合。使学生不仅为了学习而学习,而是为了工作、为了培养素质和能力而学习。课程教学与计算机等级考试一级考试内容相结合,体现教学考证一体化、教学岗位一体化。 (二)具体目标 1.能力目标: (1)熟练掌握Windows7操作系统的基本功能和操作技巧; (2)熟练掌握Word2010、Excel2010、Powerpoint2010的基本功能和操作技巧; (3)初步了解多媒体信息处理、计算机网络和数据通信; (4)能熟练使用因特网下载软件、搜索资源、上传文件、浏览新闻、申请邮箱、发送邮件等。 2.知识目标: (1)具备计算机科学和信息技术的最基本理论和基本常识; (2)具备PC微机的基本常识; (3)能较为熟练的使用办公自动化OFFICE软件; (4)能利用计算机网络实现资源共享,通过Internet获取和发布信息,了解信息安全的基本知识。 3. 素质目标: (1)培养较好的伦理道德、职业道德、社会公德; (2)培养现代的文化模式——主体意识、超越意识、契约意识; (3)培养较强的学习能力、动手能力、合作能力、创业能力; (4)养成科学的工作模式,工作有思想性、建设性、整体性。 三、建设内容 《计算机应用基础》课程建设由李长生担任团队负责人。根据调研结论,课程建设以强化学生专业能力、增强学生计算机操作水平、提高学生使用计算机解决实际问题的能力为目标,课程建设突出优质教学资源的共建、
将《底层工作者手册之C语言基础及项目开发》改名为《底层开发者手册之C语言基础及项目开发》,并做了一些修改,更新到2.4.5节。不过其中有一些章节还没有写完。先凑合看吧   《C》这本手册是《底层开发者手册》系列的第二本,但它却是我第一个开始写的,早在2008年年底时我就开始着手写这本手册,但写了没多久就因为发生了一个意外而终止了。在2010年年初的时候我开始了第四本手册的写作——嵌入式操作系统内核,目前已接近完工状态(我的博客可以下载,blog.sina.com.cn/ifreecoding),现在我又回过头来重新写《C》这本手册,将会采用与《嵌》一样的方式,写一部分就在网上发布一部分,在这同时我又在收集第一本和第三本手册的材料,准备将这4本手册同时写完,使读者可以按照顺序阅读这4本手册,层层深入底层开发者的工作。   一个良好的C语言基础是编写嵌入式设备底层代码的必要条件,如今介绍C语言的书不少,介绍嵌入式C的书也不少,但几乎没有结合实际项目来介绍C语言的,看完这样的书,C语言会用了,但做出来的产品只能称之为中国校园式产品,为求实现功能不择手段,根本不适合在项目中使用。另有一些自称C语言精华的书或网上的面试宝典,尽是讲一些偏题怪题,这可能满足了作者的虚荣心,但却在将新手引向一个错误的方向。当然,仁者见仁智者见智,这仅是我个人的观点,也一定会被他人所反驳的,正是出现百家争鸣的局面社会才能进步。   本手册分为2部分,第一部分介绍C语言基础,在介绍C基础时会结合嵌入式中的应用加以介绍,将重点介绍在项目开发中有用的内容,对于过分追求技术但又没有什么实际用处的内容不做过多的介绍,对于这些内容最多会提一下,让读者知道有这种情况存在。第二部分介绍项目开发,从项目需求、分析、设计、编码、测试、维护的角度来介绍编写代码。记住,编码只是项目中的一个部分,在中国校园式产品中这可能几乎就是全部了,但在一个可以称之为产品的项目中,它只是一部分,并且项目越大它所占的比重越小。   我在看书学习新知识时,希望看到的是那些写的多一些详细一些,也就是废话多一些的书,可以傻瓜式的一步步跟下来,不希望看到那些对关键之处一笔带过还故作高深的书,所以本手册就以废话多为原则,可能会写的罗嗦一些,只求能看的明白一些。当然,本人知识水平有限,有些知识会有理解上的错误,或者有未触及的地方,错误一定是有的,就像做产品一样,不可能没有错误。我写本手册的目的在于分享我的知识,注重实际应用,这对某一论坛上的某些只会空谈经验、分析汉字语法的理想C语言文艺专家们来说可能会不屑一顾。如有问题,请登录我的博客blog.sina.com.cn/ifreecoding反馈,我虚心接受,但我拒绝那些假大空的为了批评而批评的建议。我们做项目不是写论文,是实实在在的东西!   为新手写一本介绍C语言的书很难,因为它牵涉到非常多的知识作为基础,其中的一些知识很可能需要使用另外几本书的篇幅来介绍,而且知识是耦合在一起的,在介绍前面的时候会涉及到后面的知识,对于新手来说,没有对C形成一个全貌,无法理解。因此给新手的建议是只能多看几遍,第一遍大致看看,掌握全貌,不要细读,然后再多读几遍,仔细分析各种问题,并结合例子,自己动手编程,调试,这个过程非常重要,一定要自己动手编程,光看是没有用的,只有自己动手解决了问题,才能从根本上理解问题。 C语言入门可能会比较容易,但不要指望几个时间就能熟练掌握C语言,如果做底层编码的话则需要以年为单位来衡量。
第一阶段 Linux快速入门掌握Linux的常用操作命令 第一讲 Linux介绍 知识点1: Linux发展简史与黑客文化 知识点2: 安装Linux系统, 以Ubuntu虚拟机为例 知识点3: 购买Linux云主机,以阿里云主机为例 知识点4: Linux目录结构及常用命令 实战项目: 安装Linux虚拟机环境,配置网络及共享文件 第二讲 Linux常用操作命令 知识点1: ls、cd、pwd、cat、mkdir 知识点2: PATH环境变量以及常用快捷键 知识点3: 用户与用户组,useradd、groupadd 知识点4: 文件属性与权限操作,chmod、chown 知识点5: find 与 grep:搜索神器find命令基本用法 知识点6: tar命令 知识点7: ssh和sshd 实战项目: ssh登陆到你的Linux系统,使用find、grep、tar等常用命令解决具体问题 第二阶段 Linux开发基础与shell编程 第三讲 Linux代码编辑器 知识点1: VIM的基本用法 知识点2: VS Code 简介 实战项目: 安装Vim 和 VS Code,配置环境,配置或安装插件支持C、shell、Makefile 语法高亮 第四讲 Linux Shell编程 知识点1: Shell简介(What, Why, How) 知识点2: Shell 基础语法(变量、条件、循环、函数、库) 知识点3: 实例场景(Hello World,猜数字,文件读写,网络侦测) 实战项目: LInux服务器自动监控 第五讲 Linux开发基础 知识点1: 用C语言写一个hello word程序 知识点2: GCC与GDB 简介 知识点3: 工程文件Makefile 知识点4: 编译安装软件,找一个软件 实战项目: C语言实现一个简单的命令行系统 第三阶段 实战Linux网络与运维 第六讲 Linux网络基础 知识点1: 计算机网络基础 知识点2: ifconfig 知识点3: 网络测试命令:主机 ping/ 本机端口:netstat/ 嗅探器 nmap 知识点4: 通俗理解iptables 实战项目: Linux 防火墙实战配置 第七讲 HTTP网络服务 知识点1: HTTP基础 知识点2: LNMP 架构服务搭建 知识点3: Nginx 配置 知识点4: MySQL 配置 知识点5: PHP 简介 实战项目: 基于WordPress 搭建个人博客 第八讲 Linux运维基础 知识点1: Linux系统监控 相关命令:iostat/free/top/dstat/iotop 知识点2: Linux自化运维 实战项目: 使用Docker自动部署zabbix运维系统,实时监控服务器性能 第四阶段 Linux系统构建 第九讲 Linux系统构建 知识点1: Linux内核源代码简介 知识点2: Linux内核的编译 知识点3: Linux系统的构建 实战项目: 自行编译构建一个Linux系统 第十讲 Linux操作系统常见试题解析

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值