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

织梦网站模板源码php手机百度网站建设

织梦网站模板源码php,手机百度网站建设,wordpress大型门户,东莞市建设质量监督站长度不受限制的字符串函数#xff1a;strcpy,strcat,strcmp 长度受限制的字符串函数#xff1a;strncpy,strncat,strncmp strlen strlen函数是库函数中我们最常使用的函数#xff0c;它可以求出字符串的长度(不包含‘\0’) 使用方法 通过前面对strlen函数的模拟实现我们知…长度不受限制的字符串函数strcpy,strcat,strcmp 长度受限制的字符串函数strncpy,strncat,strncmp strlen strlen函数是库函数中我们最常使用的函数它可以求出字符串的长度(不包含‘\0’) 使用方法 通过前面对strlen函数的模拟实现我们知道strlen计算长度时是遇到\0才停止的因此如果一个字符串中没有\0,程序就会输出一个随机值如下面代码 因此我们在使用该函数时必须避免这种情况。 注意库函数中的strlen函数的类型是size_t(无符号整形) 模拟实现该函数的功能 这个函数我们实现的次数已经够多了所以不再过多赘述在此提供几种方法 1.指针- 指针          2.计数器              3.递归 strcpy  strcpy函数用于将源字符串复制到目标字符串中包括字符串的结束符\0。 使用方法 char* strcpy(char* destination, const char* source); 在使用strcpy函数时也要避免缺少\0的情况此外目标字符串必须具有足够的空间来存储源字符串的内容。 模拟实现该函数的功能 #includestdio.h #includestring.h void get_strcpy(char* des,const char* sou)//此处加const的原因是防止原字符串的内容被修改 {assert(sou ! NULL);while (*des *sou){; } } int main() {char arr1[10] xxxxxxx ;char arr2[10] bit;get_strcpy(arr1, arr2);printf(%s\n, arr1);return 0; } strcat  strcat是一个字符串追加函数,它可以把一个字符串追加给另一个字符串后面。 char* strcat(char* destination, const char* source); 使用方法 char *strcpy( char *strDestination, const char *strSource ); 模拟实现该函数的功能 #includestdio.h char* my_strcat(char* dest, char* sou) {char* ori dest;//找到源字符串中的\0while (*dest){dest;}//开始追加while (*dest *sou){;}return ori; } int main() {char arr1[30] hello ;char arr2[] world;printf(%s\n,my_strcat(arr1, arr2));return 0; } 注意事项 字符串不能自己给自己追加通过模拟实现该函数我们发现追加的标志是\0在追加开始时\0就被自己的第一个元素覆盖原先在准备追加最后一位\0的位置已经变成了一个正常的元素所以循环将一直继续不会终止。 strstr 该函数的功能是在一个字符串中查找另一个函数如果查找到则返回起始位置的地址如果找不到则返回一个空指针。 使用方法 char *strstr( const char *string, const char *strCharSet ); 第一个参数是源字符串第二个参数是要查找的字符串。  模拟实现该函数的功能 #includestdio.h #includeassert.h char* my_strstr(const char* str1, const char* str2) {assert(str1 str2);const char* s1 NULL;const char* s2 NULL;const char* tmp str1;if (*str2 \0){return (char*)str1;}while (*tmp){s1 tmp;s2 str2;while (*s1 *s2 (*s1 *s2)){s1;s2;}if (*s2 \0){return (char*)tmp;}tmp;}return NULL; } int main() {char arr1[30] aabbccd;char arr2[] bcc;char* pa my_strstr(arr1, arr2);printf(%s\n, pa);return 0; } memcpy memcpy函数是一个内存操作函数用于在内存中进行数据的复制。它将指定长度的数据从源地址复制到目标地址,不考虑源地址和目标地址是否重叠。当源地址和目标地址有重叠时使用memcpy函数可能导致不可预测的结果。 该函数出现的原因字符串的拷贝可以使用strcpy函数来进行但是通过模拟实现strcpy的功能时我们可以发现strcpy拷贝结束的标志是‘\0’但是如果拷贝的是一个整形数组该函数就不再适用了因此出现了这种更为通用的函数memcpy内存拷贝函数 该函数基本的使用方法void *memcpy( void *dest, const void *src, size_t count ); 使用方法 在msdn上可以查询出该函数的基本使用方式前两个参数都是void类型的指针意味着我们可以传入任意类型的指针参数后面的size_t是无符号的整形单位是字节意味着操作者可以传入自己想要拷贝的字节。 模拟实现该函数的功能 当你对一个指针进行加1操作时实际上会将指针的值增加一个与指针所指向的数据类型大小相等的偏移量。这个偏移量是以字节为单位计算的。 举个例子如果一个指针指向整型数据int那么对该指针进行加1操作后指针将向后移动4个字节因为int类型通常占用4个字节。类似地如果指针指向字符型数据char那么对该指针进行加1操作后指针将向后移动1个字节。 #includestdio.h #includeassert.h void* my_memcpy(void* dest, const void* sou, size_t k)//k的单位是字节 {assert(dest sou);void* orignal dest;while (k--){*(char*)dest *(char*)sou;dest (char*)dest 1;sou (char*)sou 1;}return orignal; } int main() {int arr1[10] { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] { 0 };my_memcpy(arr2, arr1, 20);int i 0;for (i 0; i 10; i){printf(%d , arr2[i]);}return 0; } 标准功能的memcpy函数其实不能实现内存重叠的拷贝比如说对于数组int arr[10] {1,2,3,4,5,6,7,8,9,10 };我们如果使用memcpy(arr2,arr,20),结果应该是1,2,1,2,1,2,7,8,9,10.因为存在内存重叠。但是VS上却能够正常编译因为VS把这个函数的功能做的比较彻底算是PLUS版本的memcpy函数超出了本身固有的功能。对于内存重叠的拷贝我们其实还有一个特定的函数memmove下面展开介绍。 memmove memmove 函数是一个内存操作函数用于在内存中移动一段数据。它可以处理源地址和目标地址有重叠的情况保证数据的正确复制。 使用方法 其使用方法与memcpy相似。  模拟实现该函数的功能  通过分析我们发现为保证字符串拷贝不受内存重叠的影响当dest的指针小于sou的指针的时候要从前向后拷贝当dest的指针大于等于sou的指针的时候要从后向前拷贝当dest的指针大于sou宽度时不管是从后向前还是从前到后拷贝都可以。 总结当dest的指针小于sou的指针的时候从前向后拷贝dest的指针大于等于sou的指针的时候从后向前拷贝。 #includestdio.h #includestring.h char* my_memmove(void* dest, const void* sou, size_t k) {char* original dest;if (dest sou){while (k--){*(char*)dest *(char*)sou;dest (char*)dest 1;sou (char*)sou 1;}}else{while (k--){*((char*)dest k) *((char*)sou k);}} } int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr 2, arr, 20);int i 0;for (i 0; i 10; i){printf(%d , arr[i]);}return 0; } memcmp memcmp与strcmp的函数设计相似 比较特定的字节后如果值相同返回值为零如果不同返回值是一个负数如果相同返回一个正数。 int memcmp(const void* ptr1, const void* ptr2, size_t num); ptr1和ptr2分别是要比较的内存区域的起始地址,num是要比较的字节数。 使用方法 #include stdio.h #include string.hint main() {char str1[] Hello;char str2[] World;int result memcmp(str1, str2, sizeof(str1));if (result 0){printf(字符串相等\n);} else if (result 0) {printf(str1小于str2\n);} else {printf(str1大于str2\n);}return 0; } memset memset是库函数中的一个函数用于将一段内存块的值设置为指定的值  void *memset(void *ptr, int value, size_t num); 使用方法  需要注意的是memset函数只能设置每个字节的值因此在设置非字符类型的数组时需要小心。另外memset函数只能设置为整数值不能设置为其他类型的值。
http://www.huolong8.cn/news/167403/

相关文章:

  • 广东双语网站建设价格推广有奖励的app平台
  • 北京平台网站建设哪家好品牌建设的十六个步骤
  • 门户网站开发软件行业应用网站建设成本
  • 专业建站源码开网店哪个电商平台好
  • 网站建设开发背景在上海找工作用哪个招聘网好
  • 池州做网站培训中企动力初期做的网站
  • 做网站以前出名的公司子商务网站建设的一般流程图
  • 怎么查到网站是谁做的企业信息免费查询系统
  • 网站搭建行业seo点石论坛
  • 网站做微信支付宝支付接口云海建设工程有限公司网站
  • 南宁网站排名优化公司内蒙古住房建设部官方网站
  • 建设通网站怎么注销邯郸小程序
  • 做兼职哪个网站好文化传播网站模板
  • 拼多多网站建设方案绍兴聚氨酯制作公司
  • 万网的网站建设好吗wordpress新版编辑器
  • 针对网站开发者的问答网站html网页可以用以下哪个工具制作
  • 和男朋友都是第一次做网站公司宣传册模板免费下载
  • 做阿里巴巴企业网站frontpage2007网站建设
  • 网站建设栏目管理wap网站服务器
  • 网站设计制作的价格低廉移动网站如何优化排名
  • 学做陶艺作品的网站网站推广优化趋势
  • 免费php网站凡科互动电脑版
  • 哪个网站做马代路线好上海中风险地区
  • 网站规划与建设 试卷wordpress 主题
  • 权威的网站建设排行榜图片类网站模板
  • 高端网站制找人开发一款app需要多少钱
  • 网站备案去哪找接入商电子商务公司名称大全
  • 商城网站建设精英如何建立一个网站 供客户选图
  • p2p网站开发用什么平台苏州市建设安全监督局网站
  • 买的网站模板里面是什么长沙优化科技有限公司电话