你好, 欢迎回来｡ 我想提供一个演示,
一个解决方案, 我们以前的挑战, 必须与理解字符数组｡
主要是,
我们要写一些函数来获取字符串的长度, 串接字符串, 以及检查两个字符串是否相等.
所以我要创建一个项目｡
我就把它命名为字符串理解｡
我们要做的第一件事就是实现这个长度函数｡
我们将在顶部创建三个函数声明｡
我们将第一个字符串命名为length｡
我们要用骆驼的名字命名｡
这只需要一个常量字符串｡
那么我们怎么知道它是字符串呢因为它是一个字符数组然后我们要放一个分号.
这将是第一个创建的, 所以我们现在就到此为止｡
我们要创建这个函数, 在下面定义它,
这样你们就能理解const这个关键字了.
Const意味着它是一个不能改变的字符串, 不能被修改｡
我们在这里使用const的原因是因为我们不想修改函数中的字符串, 我们只想解析它, 然后返回长度,
返回一个整数.
这个函数实际上很容易实现因为我们只需要遍历一个数组.
所以我们可以说in count等于零｡
这是一个局部变量｡
它只能在此函数内部使用｡
现在你可能会问自己,
为什么我们不能使用大小运算符, 因为大小运算符只告诉我们字符串的大小, 而不是告诉我们字符串中有多少个字符｡
但是我们需要做的就是创建一个循环,
遍历数组, 直到遇到空终止符｡
所以我们可以看看我们的字符串｡
我们可以说,
字符串计数不等于空终止符, 空终止符在一个字符内表示为反斜杠零.
我们可以使用不等于运算符, 因为我们要比较字符｡
我们在while语句的主体中只有一个东西, 就是递增的count｡
然后我们要返回它, 我们只需要说返回计数, 就可以了｡
这是整个字符串长度函数｡
这很简单, 因为字符串在数组中,
并且字符串以空终止符结束｡
为了测试这个,
我们可以启动main方法, 创建一些常量字符, 就说第一个单词Jason.
这就是在c中创建字符数组的方法｡
你不需要在这里有常数, 但是这里没有被修改｡
使用char关键字､ char数据类型､ 标识符, 然后使用方括号｡
最好不要在括号内指定大小, 因为c编译器会自动添加一个空终止符｡
然后在赋值运算符之后, 把字符串文字放在双引号内.
我们将在这里创建一对, 以确保它正常工作｡
我们可以很容易地显示字符串, 因为我们可以只使用百分号,
除了这里我们真正想显示的是长度｡
所以我们要用% d｡
所以我们要打印出这三个字符串的链接,
percent d, 在它们之间留一些空格, 然后加一个换行符｡
这里只需要调用每个单词的字符串长度函数, 非常简单, 就是这样｡
现在我们可以进行构建和测试, 看看它是否真的有效｡
我们应该看到的输出是,
Jason的长度是5, okay的长度是2, 而其他的长度大约是8｡
这里我们有5､ 2和8, 看起来没错｡
这就是你写字符串长度的方法｡ 让我们继续讨论连接函数｡
连接函数只需要三个字符串, 两个常量.
这不会返回任何结果｡
它只会把结果字符串放到第一个参数中｡
所以我们称之为concat｡
我们会得到一个结果,
我们会得到两个字符串, 一个是两个字符串的连接,
另一个是一个字符串. 所以我们将字符串1命名为字符串2｡
好了 这就是函数声明｡
所以在定义之前我们可以在任何地方使用｡
这一个也要通过数组｡
它只需要遍历两个数组在遍历每个数组的时候, 把结果加到字符串上.
我们要创建几个局部变量, 它们只能在这个函数中使用, int,
I和j｡
然后我们用for循环遍历数组.
我们说I等于0｡
Str sub 1或sub
I应该说不等于空终止符,
然后也递增I｡
我们熟悉for循环语法, 其中循环标识符是第一个元素｡
在第一个分号之前, 条件是我们在第二个分号之前跳出, 然后修改循环控制变量,
以确保我们没有无限循环.
这里我们要做的就是保存结果, sub
I等于str one sub I.
记住, 这些都是字符, 所以在这里使用等于赋值是完全可以的｡
我们不能在字符数组中这样做, 因为字符数组不能赋值给数组｡
我们将不得不使用字符串副本｡
这就是复制第一个字符串｡
现在我们要把第二个字符串连接到result, 所以我们会做一些非常非常相似的事情,
除了我们要在第二个数组中查找并确保把它放在result中正确的位置｡
所以我们会这样做｡
我们会从j到0, str到j不等于空终止符++ j｡
你们会看到结果就是I加j, 所以不管我最后得到什么｡
如果我加了10个字符,
它会从第10个字符开始, 因为它是从零开始的,
它只会加j, 所以10加0, 10加1等等｡
就是这样｡
最后一件非常重要的事情就是添加null终结符｡
所以我们想说result, I加上j,
然后加上一个字符,
空终止符, 也就是单引号里的反斜杠零｡
这就是我们的职责｡
我们不需要从这个函数中返回任何东西因为我们只是把字符串1复制到字符串2.
让我们来测试一下｡
我希望能在这上面做的是用几个角色来测试它｡
我们将使用现有的字符, 我们只需要连接几个字符｡
所以我们需要创建另一个结果｡
所以我们只说result来清除它｡
在这里,
我们要说, 我们将不得不指定一个大小, 但为第一个｡
所以我们将指定大小为50｡ 我们要限制它｡
所以这些常量字符应该可以工作｡
现在我们只需要输入printf, 我们要输出一个字符串.
所以我们会说percent s, 然后我们会说concat,
我们就是这么命名的.
我们将传递结果, 然后是单词1和单词2｡
输出应该显示什么, 我们会把它放到几个新行中.
这应显示为输出Jason okay｡ 所以concat实际上并不返回任何数据, 所以我不能直接把它放在printf中｡
我要做的就是调用它, 然后显示结果｡
我们称之为concat｡
所有内容都被放入结果中, 然后显示结果｡
所以当我们运行这个程序的时候, 我们应该看到杰森没事,
我们做到了｡
我们要实现的第三个函数是一个比较函数, 用于检查两个字符串是否相等｡
此函数应返回一个布尔值｡
所以我们要包含标准bool｡
所以我们可以使用布尔值和真值和假值｡
这实际上被定义为相等的字符串｡
这需要一个常量字符数组, s1和另一个数组来检查两个字符串是否相等｡
为了确保包含了正确的标题, 我将尝试构建它, 我想我做到了,
因为现在我可以使用bool关键字,
因为我包含了它, 我也可以使用true false｡
我们来实现这个相等的字符串｡
这和遍历数组检查每个字符差不多.
所以我们要为初始化为0的循环创建一对局部变量I = 0｡
在布尔值中, 它只是告诉我们它们是否相等因为这是我们要返回的, 类似于等于｡
我们可以把它初始化为false｡
我们首先要做的是统计｡
我们想看看这两个有多大｡
所以我们可以有一个while循环, 因为我们需要计数来查看大小, 基本上就是检查空终止｡
所以我们假设传入的字符串大小相同｡
所以我们可以写一个简单的while循环｡ 您也可以编写if语句｡
我把所有的东西都合并到了一个while循环中, 通过使用逻辑运算符进行比较｡
您不必使用逻辑运算符｡ 您可以使用if语句, 然后遍历第二个字符串的全部内容｡
但是这里我说的是,
当s1subI等于s2subI时,
它们不等于空终结符｡
因为如果它们都是空终结符, 我们想在其中一个是空终结符的情况下跳出.
所以现在我们说加加I｡ 最后我们要做的就是检查它们是否是空终结符｡
如果是, 您可以设置布尔变量以返回正确的数据｡
这里我们可以说,
如果s1sub等于一个空终止符, s2sub等于一个空终止符, 把布尔变量设为equals, 然后我们返回它｡
然后说返回等于｡
为了测试这个, 我们需要测试一个好的和一个坏的字符串｡
让我们继续说相等的字符串｡
我只输出布尔值的整数值,
所以percent, d, 我们在这里说等于字符串,
它会返回一些东西, 所以我们可以把它放在等于字符串的打印表达式中｡
我只想确保字符串相等然后我们传入Jason逗号Jason.
这次我们就叫它杰森的｡
而第一个应该返回1, 第二个返回0, 1代表真,
0代表假｡
当我们运行这个时, 我们看到1和0｡
一个代表真, 零代表假, 除了它坚韧读, 因为我们没有换行符｡
我们再加一个换行符, 再演示一遍｡
现在我们看到一个零, 真的假的｡
杰森杰森彼此平等｡
杰森的杰森不平等｡
这是一些快速函数, 你可以学习, 基本上了解字符数组,
以及如何用这个概念表示字符串｡
-谢谢—谢谢 我还将提供源文件, 以便您可以更详细地查看它｡
希望这对你的任务有帮助｡