2016-04-09 2 views
0

私は 'char ** arr'にcharポインタを挿入し、strcmpでcharポインタをソートするプログラムを作ろうとしていますが、何らかの理由でそのコードは動作しません。コード全体のソート部分が追加されました。バブルソートポインタへのポインタ

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

関連のないメモでは、* 3つの文字列の比較は必要ありません。ただ1つで、結果を変数に保存するだけで十分です。次に変数を比較してください。 –

答えて

0
  1. あなたが昇順または降順かどうかによって異なり、あなただけif例1にarr[i]arr[i+1]を交換する必要があります。 (strcmp() < 0またはstrcmp() > 0の場合)
  2. flagは、実際にスワップするときに1に割り当てる必要があります。それ以外の場合、ループは停止しません。
+0

ありがとう、私はあなたが言ったことを試して、プログラムはまだクラッシュします。私は何をすべきだと思いますか? –

+0

@OfekEzonデバッガを使用して、クラッシュした場所と誤った値を持つポインタを確認します。 – timrau

関連する問題