目前我刚刚完成了第二章,从中我解决了两个我觉得有趣的问题,我们将使用函数来解决它们。
让我们从第一个问题开始:给定一串数字,返回其等价数字。
我们将使用一个名为 atoi 的函数来解决这个问题,在该函数中我们将收到一个字符串(字符数组),我们将其命名为 s[],很明显该函数必须返回一个 int。从现在开始我们将把问题分为两部分:
对于 (i=0; s[i] >= '0' && s[i] <= '9'; ++i)。循环的退出条件很明确,因为如果到达字符数组的末尾,它总是“ ”,它代表空字符,其 ASCII 值为 0。此外,如果有一个值不是数字,由于上述原因,它将是循环的输出。
假设 s[i]=5,那么 s[i] - 0 相当于 53 - 48 = 5。最后,剩下的就是将数字排列到其相关位置(如一、十、百等),即实现了设置 n = 0,然后在每次迭代中更新为 n = 10 * n + (s[i] - '0')。
第二个问题:给定两个字符串 s[] 和 t[],将字符串 t 连接到字符串 s 的末尾。
为了使问题变得更容易,本书假设本身有足够的空间来存储组合。现在,我们必须首先定义一个函数 strcat,该函数必须接收两个字符串 s[] 和 t[],该函数不需要返回值。解决该问题的一种方法是首先将自己定位在第一个字符串 s[] 的末尾。从第一个链的末尾开始,我们必须开始保存第二个链 t[] 的元素。
要到达第一个字符串的末尾,我们可以从计数器 i = 0 开始,然后增加 i 的值直到数组末尾,当我们到达值 ' ' 时即可实现,这标志着整个数组的末尾的字符。所以我们可以有以下代码:
现在我们位于 s 的末尾,我们必须开始复制 t 的值。为此,我们需要启动另一个计数器 j = 0 并分配 s[i] = t[j],请记住 i 的值已经位于第一个字符串的末尾。然后我们必须增加两个索引并重复该过程,直到找到标记 t 处字符串结尾的字符“”。我们可以通过这句话来实现以上所有:
我知道我在重复自己,但为了让一切都清楚。上面的代码首先将字符t[j]赋值给s[i],然后递增i和j的值,直到找到t的末尾。
考虑到上述情况,我们的函数将是这样的:
在写完这篇文章之前我想说的是,读者请记住我正在学习,如果有任何错误,请随时在评论中告诉我。
感谢您的阅读!!!!