質問編集履歴

1

エラー箇所変更 ソースコード変更

2015/07/19 11:56

投稿

kt3302y
kt3302y

スコア27

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 前回投稿させてもらった件の続きなのですが,英単語を登録して出現回数も記録するハッシュ表を作成しました.今悩んでいますのがlexと入力したら英単語を辞書順にoccと入力したら出現回数を降順に回数が一致するなら辞書順に並べるというプログラムを作成したソースコードが下のものになるのですが,これを実行するとprint_hashtableのn=t->heads[i];でアクセス違反が起きてしまいます.何故起きてしまうのか原因と解決方法を教えてくれないでしょうか
1
+ 前回投稿させてもらった件の続きなのですが,英単語を登録して出現回数も記録するハッシュ表を作成しました.今悩んでいますのがlexと入力したら英単語を辞書順にoccと入力したら出現回数を降順に回数が一致するなら辞書順に並べるというプログラムを作成したソースコードが下のものになるのですが,これを実行するとqsortを実行しようとするとアクセス違反が起きてしまいます.何故起きてしまうのか原因と解決方法を教えてくれないでしょうか
2
2
 
3
3
  hash.c```/*
4
4
 
@@ -494,7 +494,7 @@
494
494
 
495
495
  {
496
496
 
497
- qsort(t, sizeof(t), sizeof(t), compare1);
497
+ qsort(t->heads, t->size, sizeof(HashNodePtr), compare1);
498
498
 
499
499
  }
500
500
 
@@ -504,7 +504,7 @@
504
504
 
505
505
  {
506
506
 
507
- qsort(t, sizeof(t), sizeof(t), compare2);
507
+ qsort(t->heads, t->size, sizeof(HashNodePtr), compare2);
508
508
 
509
509
  }
510
510
 
@@ -628,9 +628,9 @@
628
628
 
629
629
  }
630
630
 
631
- if (str == "lex")sort1(t);
631
+ if (strcmp(str, "lex")==0)sort1(t);
632
-
632
+
633
- else if (str =="occ")sort2(t);
633
+ else if (strcmp(str,"occ")==0)sort2(t);
634
634
 
635
635
  print_hashtable(t, fp2);
636
636