C語言數組截取常見問題


這是一段數組截取的代碼,函數功能是檢查后面的'*'的數量,若多於指定輸入數,則把多余的'*'刪除

 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]。所以可行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM