当前课程知识点:C语言程序设计 > 第22讲 编程训练 > 编程训练 > 字符串(下)
虽然C语言提供了比较丰富的字符串处理函数
但我们仍然有必要自己写函数实现字符串的某些功能
一方面是因为系统提供的函数未必全面、合适
另外
这也是一种编程训练
我们先看一下如何自己写函数实现字符串的复制
那么这是自己写的一个字符串复制函数
这是目标字符串
这是源字符串
然后我们看一下这个工作过程
这儿它是判断如果源字符串不等于0
就是没到结尾
然后把源复制给目标
然后这个i就是这个下标每次增加1
然后到什么时候结束
就是到为0的地方结束
结束了以后
这个地方切记目标字符串这儿你还得给它补一个0
下面看一下这个具体例子当中的演示
这是源字符串
这是目标字符串
i等于0的时候那么因为这个H是不等于0的
所以就这儿复制
复制完了以后
到这儿以后i++
就i等于1
这个还不等于0 再往后复制
一直持续这个过程
那么一直持续这个过程到碰到0以后
这个地方while循环退出
然后这儿在下面补一个0
我们看一下完整的程序
这个完整的程序这儿也就是刚才讲过的
然后这是main函数
main函数当中我们先定义了两个字符数组
然后通过gets输入这个源字符串
然后调用我自己的拷贝函数
然后把str1复制给str2
然后输出str2
看一下这个结果到底对不对
这是一种写法
其实还有一种更简洁的写法
这个地方也给大家介绍一下
我们看这个写法是这样的
就是整个的复制过程
这个地方只使用了一行语句就完成了
我们认真的看一下这个while语句里面它具体是怎么工作的
这个过程是这样的
它先把源字符串的一个字符复制给目标
复制完了以后
这个指针向后移向下一个字符
这个指针也向后移
完了以后再继续复制
那么这个while条件什么时候结束呢
就是到0的时候结束
那它什么时候是0
就是源字符串到了它的结尾的时候它一定是有一个0的
当它把那个0赋值给目标以后
同时这个条件也为假了
然后这个while循环也退出
这是一个c语言当中相当典型有趣的一个例子
大家看
while循环当中
后面没有什么东西直接带一个分号
而且这个里面++
++写到这个里面
可能对初学者来说第一眼不太能明白这是什么意思
实际上这个操作它包含了三部内容
这个也特别能体现c语言的这种简洁性
虽然有些时候可能不太提倡这么写代码
但是因为字符串复制这个功能特别适合这样去写
因为这样能体现c语言的功能
以及它的那个强大的地方
所以我们这儿也给大家展示一下
你下去可以认真的体会一下这种方式
我们下面看看自己写函数实现比较字符串大小的功能
这是这样实现的
就是在这个while循环当中先看一看str1
如果它的这个值不为0并且str1的值等于str2
就是两个字符相同
然后这个下标往后挪
挪向下一个字符
这样往下
那么到什么时候会结束呢
就是到两个字符串当中的字符不一样的时候
这个时候就会结束或者还有一种情况
就是两个字符串都到了0也会结束
就是要么出现不同
要么两个字符串同时到0
这样这个循环结束
循环结束了以后
就把两个字符的值一减
减的情况下如果是满足第一个条件的退出
就是两个都到0了
那么这个地方减完以后结果是0
如果是这种情况循环退出的
那么减完以后就是一个0值
那当然如果前面这个值比后面这个值大
返回就是正的
如果前面这个值比后面的小
返回的就是负数
所以你可以通过返回的是正数、负数还是0
你知道到底哪个字符串大一些
这是main函数
就不过多介绍了
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-循环类型
-作业
-程序结构
-函数基础
-作业
-数组基础
-作业
-作业
-作业
-作业
-程序调试
- 文件(上)
- 编程训练