0

これは私のプログラムに多くの問題を引き起こしています。すべてが等しい構造化ポインターの新しい配列を作成するのは'\0'なぜですか? それらが配列の最後にあるかどうかを確認しましたが、配列if(table_p -> buckets_array[i] == '\0'){ printf("ask this \n") ; }のすべてのメンバーに当てはまります。調べ方が悪いのでしょうか?最後のメンバーだけが持つべきではありません\0か?

typedef struct data_{
  char *key;
  void *data;
  struct data_ *next;
}data_el;

typedef struct hash_table_ {
  void **order;
  int *number_next_calls;
  int *number_buckets;
  int *buckets_size;
  int *worst;
  int *total;
  float *average;
  int (*hash_func)(char *);
  int (*comp_func)(void*, void*);
  data_el **buckets_array;
} hash_table, *Phash_table;

/*Create buckets array*/
table_p -> buckets_array = (data_el **)malloc(sizeof(data_el *)*(size+1));
table_p -> buckets_size = (int *)malloc(sizeof(int)*(size+1));

/*Setting order array*/
  table_p -> order = NULL;

/*Setting inital condictions*/
table_p -> worst = (int *)malloc(sizeof(int));
table_p -> total = (int *)malloc(sizeof(int));
table_p -> average = (float *)malloc(sizeof(float));
table_p -> number_buckets = (int *)malloc(sizeof(int));

/*This is where I have isssue*/
for(i = 0; i < size; i++){
    table_p -> buckets_array[i] = NULL;
    table_p -> buckets_array[i] -> buckets_size = 0;

    if(table_p -> buckets_array[i] == '\0'){
      printf("ask this \n");
    }
}
4

2 に答える 2

2

コードには次のものがあります。

table_p -> buckets_array[i] = NULL;
table_p -> buckets_array[i] -> buckets_size = 0;

それは次のように言っているようなものです:

table_p -> buckets_array[i] = NULL;
NULL -> buckets_size = 0;

これは良くありません。

于 2012-05-06T14:24:29.107 に答える
0
if(table_p -> buckets_array[i] == '\0'){

table_p->buckets_array[i]以前の (非常によく似た) 投稿で、 「data_el へのポインター」型であり、「\0」が整数定数であることを既に指摘しました。投稿する前にお読みください。

于 2012-05-06T15:21:56.160 に答える