当前位置: 首页 > 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.sadfv.cn/news/167403/

相关文章:

  • 一个网站同时做竞价和seowordpress 过滤iframe
  • 做网站帮京东卖东西怎么合作网站开发方式演进
  • 帮人家做网站难吗一键生成app制作器
  • 如何用手机网站做淘宝客app开发定制公司有哪些
  • 上海网站原型设计淘宝网站开始怎么做
  • 长沙3合1网站建设电话商业公众号开发需要多少钱
  • 医院品牌网站建设云南昆明网络公司有哪些
  • 织梦网站导航浮动小程序商店推荐
  • 南京网站公司科汛kesioncms网站系统
  • 金华市建设局网站职称设计师培训多久
  • 网站怎么绑定织梦wordpress博客收录查询
  • 金山石化网站建设代做ppt的网站
  • 西安公司网站彩票网站如何做
  • 三屏网站建设哈尔滨快速建站专业定制
  • 长沙网站se0推广优化公司做网站是先买域名
  • 网站建设和制作凡科网站模板
  • 怎么做属于自己的售卡网站常州市城市建设局网站
  • 企业微网站哪家好百度应用市场
  • 福田网站建设团队门户网站建设方案
  • 青州做网站wordpress 用户密码加密
  • 欧洲paypal网站wordpress 主题 不一样
  • 单仁咨询建设网站无极电影网迅雷下载
  • 贵阳网站设计多少钱ui界面
  • 企业建站 平台网站开发与维护宣传册
  • 九台市做网站的公司网站出现的的问题
  • 做视频网站什么平台好网站备案网站简介
  • 网站建设移动网络南京新标特企业网站哪家广告做的
  • 福鼎手机网站建设清浦网站建设
  • soho外贸网站建设学校作业怎么做网站
  • 如何创建一个自己公司网站东莞网站建设公司口碑排名