这是一段数组截取的代码,函数功能是检查后面的'*'的数量,若多于指定输入数,则把多余的'*'删除
- 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]。所以可行。