2016-04-09 100 views
0

我想做一個程序,插入到'char ** arr'一個字符指針,然後排序字符指針與strcmp,但由於某種原因它只是不工作,代碼我添加的是整個代碼的排序部分。泡沫排序字符指針

do 
    { 
     flag = 0; 

     for (i = 0; i < num - 1; i++) 
     { 
      if ((strcmp(arr[i], arr[i + 1])) < 0) 
      { 
       flag = 1; 
       temp = arr[i]; 
       arr[i] = arr[i + 1]; 
       arr[i + 1] = temp; 
      } 

      else if ((strcmp(arr[i], arr[i + 1])) > 0) 
      { 
       flag = 1; 
       temp = arr[i + 1]; 
       arr[i + 1] = arr[i]; 
       arr[i] = temp; 
      } 

      else if ((strcmp(arr[i], arr[i + 1])) == 0) 
      { 
       flag = 1; 
       continue; 
      } 
     } 
    } while (flag == 1); 
+0

在一個不相關的註釋中,你不需要*三個*字符串比較,只需要一個,將結果保存到一個變量就足夠了,然後比較變量。 –

回答

0
  1. 取決於您是否想升序或降序排列,只應在的if箱子一個交換arr[i]arr[i+1]。 (strcmp() < 0strcmp() > 0個案)
  2. flag只應在實際交換時指定爲1。否則,循環不會停止。
+0

謝謝,我試過你說的話,程序仍然崩潰。你覺得我應該怎麼做? –

+0

@OfekEzon使用調試器來檢查它崩潰的位置和哪個指針的值不正確。 – timrau