这是一段数组截取的代码,函数功能是检查后面的’*’的数量,若多于指定输入数,则把多余的’*’删除
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) = ' '; 20 } 21 }
注释部分是我一开始写的,试了好几次都不行,调试的时候发现第15行 –p1 是没有值的。原因在第10行 *p++,相当于把p(数组首地址)移动到最后,前面的元素全被删除。而p1=p,所以前面没有值。第6、7行相当于p[i],i++,p1=&p[i]。所以可行。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/604896.html