C語言數組截取常見問題
阿新 • • 發佈:2019-03-08
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語言數組截取常見問題