首页 > 编程语言 > 详细

C语言数组截取常见问题

时间:2019-03-08 21:00:15      阅读:166      评论:0      收藏:0      [点我收藏+]

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

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

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

C语言数组截取常见问题

原文:https://www.cnblogs.com/lsy-lsy/p/10498168.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!