宜昌C/C++语言培训班
宜昌C/C++语言培训班
- 上课时段:见详情
- 教学点:1个
- 开班时间:随到随学
- 课程价格:请咨询
- 已关注:841
- 优惠价格:请咨询
- 咨询电话: 400-008-6280
宜昌C/C++语言培训相关资料:
常用的9个字符串C标准库函数之strstr实现
之前介绍了经常用到的9个字符串C标准库函数,这次我们来介绍一下strstr字符串函数的实现。
函数原型:
char * strstr ( const char * str1, const char * str2 );
参数:
str1:需要从其中查找子串的字符串
str2:所要查找的子串
返回:
如果从str1中查找到了str2,则返回str1中第一次出现str2的位置,否则返回NULL.
下面我们来测试一下strstr函数的功能:
//测试程序
#include
#include//strstr
int main()
{
char str[] = "itcastithemia";
char substr[] = "th";//所要查找的子串
char *p = strstr(str, substr);
if (p != NULL)
printf("%sn", p);
else
printf("not found %sn", substr);
p = strstr(str, "tha");
if (p != NULL)
printf("%sn", p);
else
printf("not found %sn", substr);
return 0;
}
根据我们上面对strstr功能的介绍,第一次查找子串”th”,会查找成功,所以strstr函数会返回th首次出现的地址,而第二次要查找的子串“tha”并没i用,所以strstr函数会返回NULL.
测试结果如图:
符合我们的预期。
下面自己实现一个strstr函数,思路如下:
1) 从str1的每一个位置开始,依次和str2中的每一个字符进行比较,如果在到str2字符串结尾之前,出现了不等的情况,则结果本轮比较,继续进行下一轮比较,否则查找子串str2成成,返回str1中本轮开始对比的位置。
程序如下:
char *mystrstr(const char *str1, const char *str2)
{
const char *pstr = str1;
const char *psub = str2;
const char *pcur = NULL;
if (str1 == NULL || str2 == NULL) //判断参数是否合法
{
return NULL;
}
while (*pstr != '')
{
pcur = pstr; //记录每一次从str1中对比字符的起始位置
psub = str2;
while (*psub != '') //从pcur所标示的位置开始依次与psub中的每一个字符进行比较
{
if (*pcur != *psub) //如果出现字符不相等,则结束本次循环指针移动到下一个位置
break;
pcur++;
psub++;
}
if (*psub == '') //如果到达子串结尾,则说明查找子串成功
return pstr;
pstr++; //pstr指向str1中的下一个字符串位置
}
return NULL;
}
使用自实现的mystrstr运行上面的测试程序,结果如下:
至此,我们成功自实现了一个strstr函数。
C++ 开发语言,主导编程世界的地位
C语言属于高级语言,具有可移植性,面向过程的,贴近底层、运行速度快
1、应用广泛
C++ 语言广泛的用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域,是世界上使用最广泛的编程语言之一
80%大型网络游戏 由C++编程语言开发 | 大部分基础软件是由 C++编程语言开发 | 90%以上桌面系统 都是由C++语言编写 | C/C++ 技术在网络通信 方面应用巨大 |
2、稳居前列
![]() | 据世界权威语言排行榜(TIOBE)的最新数据显示(2019 年 3 月),C和C++ 语言已分别名列排行榜的第二和第四的位置。 |
C++ 软件人才稀缺,职业发展前景广
C++软件工程师在企业需求中呈上升趋势,人才需求发展处于坚挺状态
可从事行业:算法实现 网络安全 物联网 图形 / 视频 / 多媒体处理 底层数据处理 区块链 负载均衡 反向代理 |
19年迭代,课程源自企业需求,紧跟时代
达内每一期课程大纲,由研发组结合热点技术与企业需求不断完善
![]() | 课程内容: • 计算机概述 • 标准 C 基础语法 • 数据结构和算法 学习目标 计算机概述,Linux Eclipse 开发环境搭建 基本数据类型,流程控制,数组 俄罗斯方块 各种存储结构优劣对比,排序算法优劣对比 | |||
![]() | 课程内容 • Linux 文件系统 • Linux 内存管理 • Linux 进程管理 • Linux 线程管理 • 网络通讯开发 学习目标 掌握文件的打开与关闭、文件的读写、系统与标准I/O 掌握子进程创建、进程间通讯、信号捕获和处理 掌握线程创建、线程同步技术 | |||
![]() | 课程内容 • C++ 基础 • OOP • 异常和 IO 流 • QT 开源框架库 • C++ 模板 • STL 标准模板库 • MySQL 学习目标 熟悉名字空间、各种数据类型的操作 熟练掌握C++ 各种异常情况处理,输入输出流操作 掌握QT 开源框架库的使用 了解C++ 泛化数据类型技术原理和实现 掌握STL 十大容器使用 | |||
![]() | 课程内容 • Windows 编程基础 • Windows 窗口 • Windows 线程管理 • MFC 框架总揽 • 视图架构 • MFC 序列化 • MFC 网络通讯 • ADO 接口 学习目标 掌握窗口的注册、窗口的创建、消息机制、资源的使用 了解MFC 的概述、程序启动机制、窗口创建机制 掌握文件操作、永久保存机制 掌握ADO 接口访问数据库技术 | |||
![]() | 课程内容 • 网络安全概述 • 网络协议栈 • 密钥 • 内核加固 • 网络诱骗 • 防火墙 • 垃圾邮件过滤 • 恶意代码检测 • 嗅探器 学习目标 网络安全开发编码原理和切入点的剖析 对称秘钥、公钥秘钥的原理解析 针对木马攻击程序的反响渗透和注入技术 防火墙技术工作原理解析 各种抓包工具工作原理 |
多领域项目实战,助你职位发展先人一步
项目落地+重构,助你不仅能编程-更精编程
阶段项目一 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
HTTP服务器 WebServes Web服务器可以解析客户端发来HTTP协议,根据用户请求,给予响应数据(静态网页,图片或动态页面)。 | |
阶段项目二 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
网络爬虫 WebCrawler 搜索引擎的信息源自互联网,通过“网络爬虫”将整个“互联网”的海量信息获取到本地.(搜索引擎的入口) | |
阶段项目三 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
电信计费系统 DMS 电信部门针对电信用户登录信息进行采集,分析,传输,存储,以此作为对电信用户资费的依据。 | |
阶段项目四 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
远程监控 Remote Control 取消远程机所有的输入控制功能,实现本地机监视并控制远程机的所有输入输出操作。 |
扫描二维码免费领取试听课程
登录51乐学网
注册51乐学网