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

注册小程序贵州快速整站优化

注册小程序,贵州快速整站优化,新开传奇网站发布网单职业,网站开发建设兼职文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 书山有路勤为径#xff0c;学海无涯苦作舟。 创作不易#xff0c;宝子… 文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 书山有路勤为径学海无涯苦作舟。 创作不易宝子们如果这篇文章对你们有帮助的话别忘了给个免费的赞哟~ 上节回顾【C语言基础】字符函数和字符串函数 一、strncpy函数的使用 函数原型 char * strncpy ( char * destination, const char * source, size_t num );strncpy与strcpy的区别: 从函数的参数来看strncpy和strcpy前面几个参数都是char * destination, const char * source也就是将source的内容拷贝到destination里面去但是strncpy函数多了一个参数size_t num也就是对拷贝的内容有了数量上的限制而strcpy则对拷贝的内容没有数量上的限制。 从字符串中复制字符 将源的第一个num字符复制到目标。如果在复制num个字符之前找到源C字符串的结尾(用空字符表示)则目的地将用零填充直到向其写入总数为num个字符。 如果source大于num则不会在destination的末尾隐式添加空字符。因此在这种情况下destination不应被视为以空结束的C字符串(这样读取会溢出)。 【strncpy的使用】 #includestdio.h #includestring.hint main() {char arr1[] abcdef;char arr2[20] { 0 };strncpy(arr2, arr1, 3);printf(%s\n, arr2);return 0; }使用strncpy的注意事项 是否将 \0拷贝 首先我们要知道将arr1中的内容拷贝到arr2中那是否会将arr1中的 \0也拷贝到arr2中呢其实要验证这一点很简单我们将arr2中的内容改成xxxxxxxxxxxx然后再拷贝调试看一下。 #includestdio.h #includestring.hint main() {char arr1[] abcdef;char arr2[20] xxxxxxxxxxxx;strncpy(arr2, arr1, 3);printf(%s\n, arr2);return 0; }在调试的时候可以看到strncpy并没有将 \0给拷贝过去另外我们运行之后可以看到打印之后把abc之后的x也打印出来了如果 \0也拷过来的话那么用\s打印的话遇到 \0就会停止打印。 拷贝数量大于原字符数量 在使用strncpy时如果原字符串的数量小于要求拷贝的数量会怎么样呢arr1中有abcdef六个字符那如果要求拷贝10个字符该怎么办呢我们还是来调试看一下。 #includestdio.h #includestring.hint main() {char arr1[] abcdef;char arr2[20] xxxxxxxxxxxxxxx;strncpy(arr2, arr1, 10);printf(%s\n, arr2);return 0; }调试之后可以看到但原字符串数量不够时会用 \0来补充不够10位就用 \0来不够10位。用/s打印到 \0就会停止后面即使有内容也不会打印。 二、strncat函数的使用 函数原型 char * strncat ( char * destination, const char * source, size_t num );从字符串中添加字符 将源的第一个num字符附加到目标加上一个结束的空字符。 如果source中的C字符串的长度小于num则只复制结束空字符之前的内容。 和上面的类似strncat和strcat的区别也是在于strncat函数多了一个size_t num的参数。 【strncat的使用】 #includestdio.h #includestring.hint main() {char arr1[] abcdef;char arr2[20] xx;strncat(arr2, arr1, 3);printf(%s\n, arr2);return 0; }注意事项 是否追加 \0 这里因为arr2的xx后面都是 \0追加之后无法看出是否将 \0也追加了进来但我们知道strcar是从 \0开始追加的这里我们让他提前追加就行了。 可以看到strncat会将 \0也追加进来。追加字符数量大于原字符 调试之后可以看到如果追加的数量大于原字符数量那么将 \0追加完追后就不会继续追加了。 三、strncmp函数的使用 函数原型 int strncmp ( const char * str1, const char * str2, size_t num );比较两个字符串的字符 比较C字符串str1和C字符串str2的最多num个字符。 这个函数开始比较每个字符串的第一个字符。如果它们彼此相等则继续执行后面的对直到字符不相同直到达到终止的空字符或者直到两个字符串中的num字符匹配以先发生的为准。 【strncmp函数的使用】 #includestdio.h #includestring.hint main() {char arr1[] abcdef;char arr2[] abqdefgui;int ret strncmp(arr1, arr2, 3);printf(%d\n, ret);return 0; }第三个参数就是最多比较的次数如果在这之前就比较出了结果那么后面的也将不会再比较。 四、strstr函数的使用和模拟实现 函数原型 char * strstr ( const char * str1, const char * str2 );查找子字符串 返回指向str1中str2第一次出现的指针如果str2不是str1的一部分则返回空指针。 匹配过程不包括结束的空字符但它到此为止。 字符串的比较匹配不包含 \0 字符以 \0 作为结束标志 4.1 strstr函数的使用 #includestdio.h #includestring.hint main() {char arr1[] this is an apple\n;const char arr2[] is;char arr3[] pa;char* p strstr(arr1, arr2);char* pa strstr(arr1, arr3);printf(%s\n, p);printf(%s\n, pa);return 0; }返回arr2在arr1中第一次出现的指针如果没有匹配到就返回空指针。 4.2 strstr函数的模拟实现 模拟实现的函数参数类型以及返回类型从原函数可以看出参数是接收的arr1和arr2数组首元素的地址也就是char* 类型的我们只是用来进行比较匹配为了防止被修改参数前面都要加const进行修改。原函数的返回类型是arr2在arr1中第一次出现的指针所以返回类型就是 char*。 char* my_strstr(const char* str1, const char* str2) {}模拟分析 第一种情况 str1abcdef\0 str2bcd\0 这里arr1从b开始匹配一次就能匹配成功当str2的指针指向\0时就说明已经匹配到了但需要有一个指针记录从哪里开始匹配的。 第二种情况 str1abbbcdef\0 str2bbc\0 这种情况就比较复杂当str1中的第一个b和str2中的b匹配时str2中的第一个和第二个都能匹配上当第三个str2是c而str1却是b这时候又要回去重新进行匹配但str2中的指针已经指向c了没办法回去所以这里不仅需要一个指针记录开始匹配的位置还需要一个指针指向str2的开始位置方便那个指针能指向回来。 第三种情况 str1abcdef\0 str2bbq\0 这种情况最简单就是匹配不到。 #includestdio.hchar* my_strstr(const char* str1, const char* str2) {const char* s1 NULL;const char* s2 NULL;const char* cur str1;if (*str2 \0)return (char*)str1;while (*cur){s1 cur;s2 str2;while (*s1 ! \0 *s2 ! \0 *s1 *s2){s1;s2;}if (*s2 \0) // 匹配完成{return (char*)cur;}cur;}return NULL; // 没找到 }int main() {char arr1[] this is an apple\n;const char arr2[] is;char arr3[] pa;char* p my_strstr(arr1, arr2);char* pa my_strstr(arr1, arr3);printf(%s\n, p);printf(%s\n, pa);return 0; }五、strtok函数的使用 函数原型 char * strtok ( char * str, const char * sep );sep参数指向⼀个字符串定义了用作分隔符的字符集合第⼀个参数指定⼀个字符串它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标 记。strtok函数找到str中的下⼀个标记并将其用 \0 结尾返回一个指向这个标记的指针。注strtok函数会改变被操作的字符串所以在使用strtok函数切分的字符串⼀般都是临时拷贝的内容并且可修改。strtok函数的第一个参数不为NULL 函数将找到str中第一个标记strtok函数将保存它在字符串中的位置。strtok函数的第一个参数为 NULL 函数将在同一个字符串中被保存的位置开始查找下一个标记。如果字符串中不存在更多的标记则返回 NULL 指针。 【strtok函数的使用】 #includestdio.h #includestring.hint main() {char arr1[] zhangxuqq.com;char arr2[30] { 0 };strcpy(arr2, arr1);const char* sep .;char* ret NULL;for (ret strtok(arr2, sep); ret ! NULL; ret strtok(NULL, sep)){printf(%s\n, ret);}// ret strtok(arr2, sep);// printf(%s\n, ret);// ret strtok(NULL, sep);// printf(%s\n, ret);// ret strtok(NULL, sep);// printf(%s\n, ret);return 0; }六、strerror函数的使用 函数原型 char * strerror ( int errnum );strerror 函数可以把参数部分错误码对应的错误信息的字符串地址返回来。 在不同的系统和C语⾔标准库的实现中都规定了一些错误码⼀般是放在 errno.h 这个头⽂件中说明 的C语言程序启动的时候就会使用一个全局的变量errno来记录程序的当前错误码只不过程序启动 的时候errno是0表示没有错误当我们在使用标准库中的函数的时候发生了某种错误就会将对应 的错误码存放在errno中而一个错误码的数字是整数很难理解是什么意思所以每⼀个错误码都是 有对应的错误信息的。strerror函数就可以将错误对应的错误信息字符串的地址返回。 【strerror函数的使用】 #includestdio.h #includestring.hint main() {for (int i 0; i 10; i){printf(%d:\t%s\n, i, strerror(i));}return 0; }举例 #include stdio.h #include string.h #include errno.h int main() {FILE* pFile;pFile fopen(unexist.ent, r);if (pFile NULL)printf(Error opening file unexist.ent: %s\n, strerror(errno));return 0; }
http://www.w-s-a.com/news/428842/

相关文章:

  • 上线倒计时单页网站模板做网站的资金来源
  • 泸州市建设厅网站中小企业网络需求分析
  • asp网站版权做网页价格
  • 长春网站建设路关键词优化公司哪家好
  • 河南省建设银行网站年报天津设计师网站
  • 沙洋网站定制如果自己建立网站
  • 凡科网站怎么做建站关键字搜索网站怎么做
  • 小说网站建站程序企业邮箱地址
  • 福州市住房和城乡建设网站网站开发方案论文
  • 在线教育网站开发网站推广常用方法包括
  • 东莞高端品牌网站建设软件开发模型及特点
  • 个人网站的设计与实现的主要内容网站开发公司架构
  • 浏览器收录网站什么是新媒体营销
  • 上海营销网站建设公司下面哪个不是网页制作工具
  • 有哪些网站可以做设计比赛苏州设计公司排名前十
  • 公益网站建设需求车陂手机网站开发
  • 高端网站建设专业营销团队宁德网站建设51yunsou
  • 网站如何做cdn购物网站建设app开发
  • 简单的手机网站模板好看大方的企业网站源码.net
  • 沈阳住房和城乡建设厅网站网站个人备案做论坛
  • 企业建网站的目的开家网站建设培训班
  • 做怎么网站网站优化和推广
  • 建站工具 风铃网站每年空间域名费用及维护费
  • 网站开发工具 知乎工业软件开发技术就业前景
  • 永济微网站建设费用新手如何自学编程
  • 在本地怎么做网站深圳保障房申请条件2022
  • 广州天河区网站建设公司东莞网络游戏制作开发
  • 哪个网站做免费小程序rio门户网站的制作
  • 短网站生成查询网站所有关键词排名
  • 阿里云购买网站登录技术服务外包公司