2010年4月27日火曜日

日記ちゃんqsort

 qsortしてんのにぜんぜんソートされねえ何なの? とずっと引っかかってたんだけど、
比較関数の処理方法を変えたら正しく動作するようになった、っぽい。


int compare( const void* a, const void* b )
{
  int a = *((int*)a);
  int b = *((int*)b);
 
  return a-b;
}

 から

int compare( const void* a, const void* b )
{
  int a = *((int*)a);
  int b = *((int*)b);
 
  if ( a > b ) return 1;
  else if ( a == b ) return 0;
  return -1;
}

 のような感じに変えた。
キャスト周りはサンプルゆえ適当だから間違ってるかもしれんがふんいきが伝わればいいかと。
よく考えてないがオーバーフロー関係? 
 
 他にもテキストファイルを読み込むときに読込先バッファを初期化してなくて大暴走とか多数。

0 件のコメント: