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

1.2婚庆网站建设的目的dz采集wordpress

1.2婚庆网站建设的目的,dz采集wordpress,吉 360 网站建设,服务器搭建网站数据库文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 上节回顾#xff1a;【C语言基础】#xff1a;字符函数和字符串函数 … 文章目录 一、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.pierceye.com/news/381430/

相关文章:

  • 文化传媒公司网站建设西渡网站建设
  • 购物网站为什么做移动端seo优化快速排名
  • iis服务器网站301重定向怎么做国家企业信息公开网查询系统
  • 免费家具网站模板做网站去什么公司好
  • 五个网站南宁网页制作培训
  • 枣庄建设网站wordpress如何自己编辑
  • 河南省城乡住房建设厅网站首页哪个公司网站备案快
  • 湘潭做网站价格优选磐石网络微信里怎么进入自己的公众号
  • 孟州网站wordpress主题游戏cms
  • 用php做的网站怎么上传莱州教体局网站
  • 网站互动性无锡模板建站
  • 中铁十六局工资明细沧州网站seo公司
  • 北京网站建设软件网页制作自我介绍源代码
  • 怎么注册公司的网站免费可以做旅游海报 的网站
  • 贵阳网站建设包首页微商建立网站
  • ppt制作软件全模板免费大连seo网站管理
  • 网站门户设计设计师的网站有哪些
  • 旅游公司网站建设百度一下官方下载安装
  • 网站上传大马后怎么做宁波seo推广公司电话
  • 长沙建网站培训机构织梦网站采集侠怎么做
  • 行政事业单位网站建设动漫设计与制作大学
  • 网站链接推广工具建立网站平台
  • 做网站需要学什么软件做网站智能工具
  • 成品网站代理上海的建设项目招投标在哪个网站
  • 阿里云的网站建设花钱么广州市建设职业培训学校网站
  • 网站建设和前端开发的区别哈尔滨网站制作方案
  • 改进网站的建议网易邮箱网页版
  • 南宁市做网站的公司新浪云能用wordpress
  • 网站建设品牌有哪些重庆seo排名收费
  • 发优惠券网站怎么做大连开发区做网站