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

北京市网站建设_网站建设公司_VS Code_seo优化

美容行业网站建设,做订餐网站数据库应该有哪些表,怎样建房,微信公众号怎么做链接网站文章目录 1. 获取字符串长度strlen 2. 复制字符串strcpystrncpy 3. 拼接字符串strcatstrncat 4. 字符串比较strcmpstrncmp 1. 获取字符串长度 strlen 库函数strlen的原型如下#xff1a; size_t strlen( char const *string );注意strlen返回一个类型为size_t的值。这个类型… 文章目录 1. 获取字符串长度strlen 2. 复制字符串strcpystrncpy 3. 拼接字符串strcatstrncat 4. 字符串比较strcmpstrncmp 1. 获取字符串长度 strlen 库函数strlen的原型如下 size_t strlen( char const *string );注意strlen返回一个类型为size_t的值。这个类型是在头文件stddef.h中定义的它是一个无符号整数类型。在表达式中使用无符号数可能导致不可预料的结果。例如下面两个表达式看上去是一样的 if( strlen( x ) strlen( y ) ) ... if( strlen( x ) – strlen( y ) 0 ) ...但事实上它们是不相等的。第1条语句将按照你预想的那样工作但第2条语句的结果将永远是真。strlen的结果是个无符号数所以操作符左边的表达式也将是无符号数而无符号数绝不可能是负的。 表达式中如果同时包含了有符号数和无符号数可能会产生奇怪的结果。和前一对语句一样下面两条语句并不相等其原因相同。 if( strlen( x ) 10 ) ... if( strlen( x ) – 10 0 ) ...如果把strlen的返回值强制转换为int就可以消除这个问题。 2. 复制字符串 strcpy 用于复制字符串的函数是strcpy它的原型如下所示 char *strcpy( char *dst, char const *src );这个函数把参数src字符串复制到dst参数。如果参数src和dst在内存中出现重叠其结果是未定义的。由于dst参数将进行修改所以它必须是个字符数组或者是一个指向动态分配内存的数组的指针不能使用字符串常量。该函数返回它们第1个参数的一份拷贝就是一个指向目标字符数组的指针。 目标参数的以前内容将被覆盖并丢失。即使新的字符串比dst原先的内存更短由于新字符串是以NUL字节结尾所以老字符串最后剩余的几个字符也会被有效地删除。举个例子来说 char message[] Original message; ... if (...)strcpy(message, Different);如果条件为真并且复制顺利执行数组将包含下面的内容 第1个NUL字节后面的几个字符再也无法被字符串函数访问因此从任何现实的角度看它们都已经是丢失的了。 程序员必须保证目标字符数组的空间足以容纳需要复制的字符串。如果字符串比数组长多余的字符仍被复制它们将覆盖原先存储于数组后面的内存空间的值。strcpy无法解决这个问题因为它无法判断目标字符数组的长度。例如 c char message[] Original message; ... if (...)strcpy(message, A different message);第2个字符串太长了无法容纳于message字符数组中。因此strcpy函数将侵占数组后面的部分内存空间改写原先恰好存储在那里的变量。这可能发生意想不到的效果。如果在使用这个函数前确保目标参数足以容纳源字符串就可以避免大量的调试工作。 strncpy 和strcpy一样strncpy把源字符串的字符复制到目标数组。然而它总是正好向dst写入len个字符。它的原型如下 char *strncpy(char *dst, char const *src, size_t len);如果strlen( src )的值小于lendst数组就用额外的NUL字节填充到len长度。如果strlen( src )的值大于或等于len那么只有len个字符被复制到dst中。注意它的结果将不会以NUL字节结 尾 。 strncpy调用的结果可能不是一个字符串因此字符串必须以NUL字节结尾。如果在一个需要字符串的地方例如strlen函数的参数使用了一个不是以NUL字节结尾的字符序列会发生什么情况呢strlen函数将无法知道NUL字节是没有的所以它将继续进行查找一个字符接一个字符直到它发现一个NUL字节为止。或许它找了几百个字符才找到而strlen函数的这个返回值从本质上说是一个随机数。或者如果函数试图访问系统分配给这个程序以外的内存范围程序就会崩溃。 这个问题只有当你使用strncpy函数创建字符串然后或者对它们使用str开头的库函数或者在printf中使用%s格式码打印它们时才会发生。在使用不受限制的函数之前你首先必须确定字符串实际上是以NUL字节结尾的。例如考虑下面这个代码段 char buffer[BSIZE]; ... strncpy(buffer, name, BSIZE); buffer[BSIZE - 1]\0;如果name的内容可以容纳于buffer中最后那个赋值语句没有任何效果。但是如果name太 长这条赋值语句可以保证buffer中的字符串是以NUL结尾的。以后对这个数组使用strlen或其 他不受限制的字符串函数将能够正确工作。 3. 拼接字符串 strcat 要想把一个字符串添加连接到另一个字符串的后面你可以使用strcat函数。它的原型如下 char *strcat( char *dst, char const *src );strcat函数要求dst参数原先已经包含了一个字符串可以是空字符串。它找到这个字符串的末尾并把src字符串的一份拷贝添加到这个位置。如果src和dst的位置发生重叠其结果是未定义的。该函数返回它们第1个参数的一份拷贝就是一个指向目标字符数组的指针。 strcpy(message, Hello ); strcat(message, customer_name); strcat(message, , how are you?);每个strcat函数的字符串参数都被添加到原先存在于message数组的字符串后面。其结果是下面这个字符串 Hello Jim, how are you? 和前面一样程序员必须保证目标字符数组剩余的空间足以保存整个源字符串。但这次并不是简单地把源字符串的长度和目标字符数组的长度进行比较必须考虑目标数组中原先存在的字符串。 我们也可以这样嵌套因为返回值是第一个参数的指针 strcat( strcpy( dst, a ), b );strcpy首先执行。它把字符串从a复制到dst并返回dst。然后这个返回值成为strcat函数的第1个参数strcat函数把b添加到dst的后面。 它等价于 strcpy( dst, a ); strcat( dst, b );strncat 尽管strncat也是一个长度受限的函数但它和strncpy存在不同之外。它从src中最多复制len个字符到目标数组的后面。它的原型如下 char *strcat( char *dst, char const *src );但是strncat总是在结果字符串后面添加一个NUL字节而且它不会像strncpy那样对目标数组用NUL字节进行填充。注意目标数组中原先的字符串并没有算在 strncat的长度中。strncat最多向目标数组复制len个字符再加一个结尾的NUL字节它才不管目标参数除去原先存在的字符串之后留下的空间够不够。 4. 字符串比较 strcmp 比较两个字符串涉及对两个字符串对应的字符逐个进行比较直到发现不匹配为止。那个最先不匹配的字符中较“小”也就是说在字符集中的序数较小的那个字符所在的字符串被认为“小于”另外一个字符串。如果其中一个字符串是另外一个字符串的前面一部分那么它也被认为“小于”另外一个字符串因为它的NUL结尾字节出现得更早。这种比较被称为“词典比较”对于只包含大写字母或只包含小写字母的字符串比较这种比较过程所给出的结果总是和我们日常所用的字母顺序的比较相同。 库函数strcmp用于比较两个字符串它的原型如下 int strcmp( char const *s1, char const *s2 );如果s1小于s2strcmp函数返回一个小于零的值。如果s1大于s2函数返回一个大于零的值。如果两个字符串相等函数就返回零。注意标准并没有规定用于提示不相等的具体值。它只是说如果第1个字符串大于第2个字符串就返回一个大于零的值如果第1个字符串小于第2个字符串就返回一个小于零的值。一个常见的错误是以为返回值是1和1分别代表大于和小于。但这个假设并不总是正确的。 对于这个函数常出现的错误是 if( strcmp( a, b ) )他以为如果两个字符串相等它的结果将是真。但是这个结果将正好相反因为在两个字符串相等的情况下返回值是零假。然而把这个返回值当作布尔值进行测试是一种坏风格因为它具有三个截然不同的结果小于、等于和大于。所以更好的方法是把这个返回值与零进行比较。 由于strcmp并不修改它的任何一个参数所以不存在溢出字符数组的危险。但是和其他不受限制的字符串函数一样strcmp函数的字符串参数也必须以一个NUL字节结尾。如果并非如此strcmp就可能对参数后面的字节进行比较这个比较结果将不会有什么意义。 strncmp strncmp也用于比较两个字符串但它最多比较len个字节。它的原型为 int strncmp( char const *s1,char const *s2,size_t len );如果两个字符串在第len个字符之前存在不相等的字符这个函数就像strcmp一样停止比较返回结果。如果两个字符串的前len个字符相等函数就返回零。 参考 《C和指针》
http://www.ihoyoo.com/news/80480.html

相关文章:

  • nodejs做网站还是app做中东市场哪个网站合适
  • 广西桂林天气预报15天查询北京seo推广外包
  • 怎么在网站上做推广建设工程信息官网查询系统
  • 自贡公司做网站wordpress 上传图片500错误
  • 做ppt的网站有哪些内容吗南京建设工程网站
  • 专业找图片的网站上海高端网站定制建设公司
  • 政务信息网站建设工作wordpress图片缝隙
  • wordpress 添加菜单seo赚钱方法大揭秘
  • 浙江大数据网站建设问答知识微企点建站怎么样
  • 鹿泉专业网站建设上海公司排名大全
  • 合肥学校网站建设编程教育机构
  • 北京网站建设哪家设计好网站建设drwhcm
  • 岫岩网站建设html购物网站怎么做
  • 网站设置点赞推广新网站
  • 中国国建设监理协会网站建站工具有哪些cms
  • 响应式网站原理麋鹿 wordpress
  • 谎称在网站网站做维护成都seo技术
  • 网站设计加油站如何制作一个微信刷题小程序
  • 手机网站分享js代码小微企业名录查询官网
  • 快速微信网站开发网站开发服务合同
  • 龙口网站建设哪家好优化seo网站
  • 网站建设销售好做吗加盟的网站建设
  • 东莞设计网站建设方案公司网站空间申请
  • 外贸企业商城网站建设中企动力做的 石子厂网站
  • 智能建站平台十大网页设计大全
  • 千图网解析网站怎么做谈谈什么是网络营销
  • 石景山网站建设服务宁波网站优化公司哪家好
  • 哪个网站可以专门做产品推广京东网上商城书店
  • 黄浦西安网站建设吉林市建设厅网站
  • 网站 tag标签深圳建设工程信息价