经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言数组截取常见问题
来源:cnblogs  作者:捞的不谈  时间:2019/3/11 9:05:57  对本文有异议

这是一段数组截取的代码,函数功能是检查后面的'*'的数量,若多于指定输入数,则把多余的'*'删除

  1. 1 void fun( char *a,int n )
  2. 2 {
  3. 3
  4. 4 char *p = a;
  5. 5
  6. 6 while(*p)
  7. 7 p++;
  8. 8
  9. 9 /*
  10. 10 while(*p++);
  11. 11 */
  12. 12
  13. 13 char *p1 = p;
  14. 14 int num = 0;
  15. 15 while(*(--p1) == '*')
  16. 16 num++;
  17. 17
  18. 18 if(num>n){
  19. 19 *(p-num+n) = '\0';
  20. 20 }
  21. 21 }

注释部分是我一开始写的,试了好几次都不行,调试的时候发现第15行 --p1 是没有值的。原因在第10行 *p++,相当于把p(数组首地址)移动到最后,前面的元素全被删除。而p1=p,所以前面没有值。第6、7行相当于p[i],i++,p1=&p[i]。所以可行。

原文链接:http://www.cnblogs.com/lsy-lsy/p/10498168.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号