当前位置: 首页 > news >正文

阳山做网站做众筹网站怎么赚钱

阳山做网站,做众筹网站怎么赚钱,百度2022最新版本,wordpress仿论坛主题【C语言】——字符串函数 前言一、 s t r l e n strlen strlen 函数1.1、函数功能1.2、函数的使用1.3、函数的模拟实现#xff08;1#xff09;计数法#xff08;2#xff09;递归法#xff08;3#xff09;指针 - 指针 二、 s t r c p y strcpy strcpy 函数2.1、函数功能… 【C语言】——字符串函数 前言一、 s t r l e n strlen strlen 函数1.1、函数功能1.2、函数的使用1.3、函数的模拟实现1计数法2递归法3指针 - 指针 二、 s t r c p y strcpy strcpy 函数2.1、函数功能2.2、函数的使用2.3、函数的模拟实现 三、 s t r c n t strcnt strcnt 函数3.1、函数功能3.2、函数的使用3.3、函数的模拟实现 四、 s t r c m p strcmp strcmp 函数4.1、函数功能4.2、函数的使用4.3、函数的模拟实现 前言 在我们学习 C语言 的过程中对库函数的使用是必不可少的。其中相信大家最熟悉的就是 s t d i o . h stdio.h stdio.h 中的 p r i n t print print 和 s c a n f scanf scanf 函数了吧。   但是今天我们不讲他们太难了,呜呜呜今天我们来讲与字符串相关的函数也就是 s t r i n g . h string.h string.h 中的系列函数。   要知道除了输入输出我们对字符串的操作也是必不可少的那么了解字符串相关的函数的重要性就不言而喻了让我们开启接下来的学习吧。 一、 s t r l e n strlen strlen 函数 1.1、函数功能 函数声明size_t strlen(const char* str); s t r l e n strlen strlen 函数用于求字符串的长度使用时必须包含头文件基本原理是从传递的指针变量开始从前往后计算字符的个数直到遇到 ‘\0’ 停止 ‘\0’ 本身不计算因此参数指向的字符串必须要以 ‘\0’ 结束。返回值为字符串的长度注意返回值是 size_t 类型易错 1.2、函数的使用 s t r l e n strlen strlen 函数的使用非常简单这里就不过多介绍了大家直接看代码 #includestring.h #includestdio.hint main() {char* a abcdef;int sz strlen(a);printf(%d\n, sz);return 0; }运行结果   1.3、函数的模拟实现 1计数法 首先我们要知道指针存储的是字符串首字符的地址。该方法的思路是将传入的字符指针不断往后移每移一次计数器加一当指针指向 ‘\0’ 时结束计数并返回计数的值。    代码实现 #includeassert.hsize_t my_strlen(const char* str) {//assert断言防止传入空指针assert(str);int count 0;//判断条件指针指向的字符是否为0\0while (*str){count;str;}return count; }2递归法 有没有办法在求出字符串长度的同时不创建临时变量呢我们可以试试递归的思想 那用递归的思想来计算字符串的长度解题思路是什么呢 我们不妨想比如要计算 “ a b c abc abc” 的长度是不是可以将他看成 1 1 1“ b c bc bc” 的长度而 “ b c bc bc” 的长度又可以将他看成是 1“ c c c” 的长度。    怎么样你想到了吗    代码实现 #includeassert.h size_t my_strlen(const char* str) {assert(str);if (!*str)//逻辑取反当*str为0时为假逻辑取反为真return 0;elsereturn 1 my_strlen(str 1); }3指针 - 指针 还有一个方法就是指针 - 指针首先我们知道指针 - 指针代表的是两指针之间的元素个数详情请看【C语言】—— 指针一 初识指针上      我们可以利用这个思想创建一个指针变量让他不断移动直至指向 \0 再通过两个指针相减得到字符串的长度。    代码实现 #includeassert.hsize_t my_strlen(const char* str) {assert(str);char* p str;while (*p){;}return p - str - 1; }代码解析      while (*arr);可能这句代码有些小伙伴不太了解没关系我们一起来看看 *arr这里有两个操作符 ∗ * ∗ 和 后置。 虽然后置 的优先级比 ∗ * ∗ 高但是他是后置的所以先进行解引用解引用完成后结果为真则进入循环为假退出循环无论 * a r r arr arr 结果为真为假接下来 a r r arr arr 进行自增操作。注 操作数是 a r r arr arr而非 * a r r arr arr如果想让 * a r r arr arr 自增应写为*(arr)因为循环不需要再执行任何操作因此放置空语句return arr - str - 1;因为前面循环的判断条件不论真假 a r r arr arr 都会自增即指针指向 ‘\0’ 后依然会往后移动一位此时如果直接arr - str则把 ‘\0’ 也计算在内而 s t r l e n strlen strlen 是不计算 ‘\0’ 的因此最终要 - 1 二、 s t r c p y strcpy strcpy 函数 2.1、函数功能 功能 s t r c p y strcpy strcpy 函数实现的是字符串的拷贝将 s o u r c e source source 指针指向的字符串(源字符串) 拷贝到 d e s t i n a t i o n destination destination 指针指向的字符串(目标字符串) 中。 源字符串必须以 ‘\0’ 结束该函数会将 ‘\0’ 拷贝到目标空间目标空间必须足够大以确保能存放源字符串否则会出现越界访问的情况目标空间必须是可修改的函数的返回值为指向目标空间的指针 可能会有小伙伴说字符串的拷贝哪有那么麻烦还要用函数不就是直接赋值吗 int main() {char arr1[] abcdef;char arr2[20] { 0 };arr2 arr1;return 0; }这样可以吗当然是不可以的。为什么呢      别忘了 a r r 1 arr1 arr1 和 a r r 2 arr2 arr2 是两个数组首元素的地址地址是一个常量值并不是变量就像5 3;可以把 3 赋值给 5 吗肯定是不行的。因此字符串的赋值并没有那么简单哦。    2.2、函数的使用 #includestdio.h #includestring.hint main() {char src[20] good good study;char dest[40] { 0 };char* s strcpy(dest, src);printf(%s\n, s);return 0; }运行结果    2.3、函数的模拟实现 要模拟实现 s t r c p y strcpy strcpy 函数其实思路很简单只需将字符串的中的每个字符依次拷贝过去即可当拷贝完源字符串的 \0 拷贝结束。      我们来尝试写下代码 char* my_strcpy(char* dest, const char* src) {//要返回目标空间的地址char* ret dest;//不能传入空指针assert(dest ! NULL);assert(src ! NULL);//拷贝\0之前的内容while (*src ! \0){*dest *src;dest;src;}//拷贝\0*dest *src;return ret; }上述代码基本上是没问题的但大家发现没有该代码有点繁琐*dest *src;就出现了两次有什么改进方法呢我们来看下面的代码    char* my_strcpy(char* dest, const char* src) {char* ret dest;assert(dest src);while (*dest *src){;}return ret; }这里我们重点来讲解一下while (*dest *src);语句 虽然两个 后置 的优先级最高但是因为是后置先使用后首先执行的是两个解引用操作解引用完成后将 * s r c src src 的值赋给 * d e s t dest dest赋值完成后进行循环的条件判断* d e s t dest dest ‘\0’ 则退出循环否则执行循环最后 d s e t dset dset 和 s r c src src 两个指针执行即自增    怎么样这段代码是不是很巧妙呢       三、 s t r c n t strcnt strcnt 函数 3.1、函数功能 功能 s t r c a t strcat strcat 函数的功能是实现字符创的追加将源字符串的内容追加到目标字符串的结尾。 源字符串必须以 ‘\0’ 结束追加会将目标空间原来的 ‘\0’ 覆盖目标字符串结尾也要有 ‘\0’否则不知从哪开始追加目标空间必须足够大能容下追加源字符串之后的内容目标空间必须可修改返回的是目标空间的起始地址目标空间与源字符串不能重叠即不能自己给自己追加 3.2、函数的使用 #includestdio.h #includestring.h int main() {char src[20] day day up!;char dest[40] good good study! ;char* s strcat(dest, src);printf(%s\n, s);return 0; }运行结果    3.3、函数的模拟实现 s t r c a t strcat strcat 函数怎么模拟实现呢大家不妨想一想追加不也是一种拷贝吗它的实现方法与 s t r c p y strcpy strcpy 函数的实现很像只是 s t r c p y strcpy strcpy 是从头开始拷贝而 s t r c a t strcat strcat 是从目标字符串的末尾开始拷贝。    参考代码 char* mu_strcat(char* dest, const char* src) {char* ret dest;assert(dest src);//找到目标空间的末尾while (*dest){dest;}//进行追加拷贝while (*dest *src){;}return ret; }四、 s t r c m p strcmp strcmp 函数 4.1、函数功能 功能比较两个字符串的大小     s t r 1 str1 str1 s t r 2 str2 str2 返回 0 0 0 的数字     s t r 1 str1 str1 s t r 2 str2 str2 返回 0 0 0     s t r 1 str1 str1 s t r 2 str2 str2 返回 0 0 0 的数字       比较方式       s t r c m p strcmp strcmp 函数比较字符串中对应位置上两个字符的 ASCII码 值的大小来比较两个字符串大小 s t r c m p strcmp strcmp 会逐一比较两个字符串中相应位置的各个字符从第一个字符开始比较若相等则比较下位字符   直至比出大小或遇到其中一个字符串的 \0比较结束先遇到\0的字符串较小可以理解成 ‘\0’ 的ASCII码值为 0任何字符的 ASCII码值都比它大。    4.2、函数的使用 #inlcudestdio.h int main() {char str1[] abcd;char str2[] Abcd;char str3[] abcd;char str4[] bbcd;int ret1 strcmp(str1, str2);//比较str1与str2int ret2 strcmp(str1, str3);//比较str1与str3int ret3 strcmp(str1, str4);//比较str1与str4printf(%d %d %d\n, ret1, ret2, ret3);return 0; }运行结果 4.3、函数的模拟实现 int my_strcmp(const char* str1, const char* str2) {//接下来要对指针进行解引用因此不能传入空指针assert(str1 str2);//相同位上两个字符相等进入循环while (*str1 *str2){//当两个字符都为\0时也进入了循环遇到\0表示字符串结束//因为相等才能进入循环判断语句因此只用写一个if (*str1 \0){return 0;}str1;str2;}//不相等返回两个字符的ASCII码的差值return *str1 - *str2; }好啦本期关于部分字符串函数的介绍及模拟实现就介绍到这里啦希望本期博客能对你有所帮助更多关于字符串的函数还请收看下一期。同时如果有错误的地方请多多指正让我们在C语言的学习路上一起进步
http://www.hkea.cn/news/14334616/

相关文章:

  • 辽宁省建设工程注册中心网站全网营销包括什么
  • 天津做网站价格新开传奇网站服
  • 加拿大28网站开发百度排行榜风云榜小说
  • 无锡网站建设 app中山cms建站
  • 抚顺市 网站建设网站源代码购买
  • 建站免费加盟全屏产品网站
  • 搭建网站原理六安人事考试网
  • 汕头新导网络公司seo关键词
  • aspcms三合一网站源码手机版网页
  • 萝岗公司网站建设邢台做wap网站
  • 大良购物网站建设网站开发一键上架淘宝
  • 网站开发设计手册深圳餐饮设计公司排名
  • 深圳市南山区住房和建设局官方网站做国外有那些网站比较好
  • 甘肃肃第八建设集团网站dede网站 index.php无法访问
  • 洪江市网站南昌网站设计制作
  • 建立一个个人介绍网站上海长宁建设和交通门户网站
  • 如何在招聘网站上做薪酬统计软件开发输出文档
  • 常见的pc端网站布局1688官网app
  • 直接用apk 做登陆网站一个公司可以注册几个网站
  • 有哪些可以做问卷的网站写一篇软文多少钱
  • 北京网站建设还公司网站设计与建设的公司
  • 门户网站 建设 通知诚信网站体系建设工作
  • 网站建设中布局直播软件哪个好看
  • wordpress注册默认密码烟台网站seo外包
  • 汽车网站设计论文广州网站建设论坛
  • WordPress网站登录邮件提醒余姚网站建设
  • 专门培训seo的网站怎么用PS做网站广告图
  • 网站建设优化解析手机app设计方案
  • 上海网站建设lv cn西宁手机微网站建设
  • 怎么可以上传自己做的网站种子搜索网站怎么做的