1. 程式人生 > >C語言數組截取常見問題

C語言數組截取常見問題

i++ style 常見問題 函數功能 註釋 移動 截取 代碼 一段

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

 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語言數組截取常見問題