繁体   English   中英

我将如何打印这个?

[英]How would I print this?

请看我的最后一行。 我将如何打印这个? 我怎么投? 我应该投它(word*)table_p -> buckets_array[0] -> data -> key(word*)table_p -> buckets_array[0] -> data -> frequency吗?

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

typedef struct hash_table_ {
  /* structure definition goes here */
  data_el **buckets_array;
} hash_table, *Phash_table;

typedef struct word_{
  char key[WORD_SIZE];
  int frequency;
} word;

word *new_word;
new_word = (word *)malloc(sizeof(word));

new_word->frequency = 5;
new_word->key = "Lalalal";

Phash_table table_p;
table_p = (Phash_table)malloc(sizeof(hash_table));
table_p->buckets_array = (data_el **)malloc(sizeof(data_el *)*(size+1));
table_p->buckets_array[0]->data = (void*)new_word;

/*Is this right? How do I cast this? (word*) ?*/
printf("Key :%s Frequency:%d ",table_p->buckets_array[0]->data->key,
            table_p->buckets_array[0]->data->frequency);

给你 在此过程中修复了几个错误,其中包括您正在寻找的疯狂演员:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define WORD_SIZE 1024

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

typedef struct hash_table_ {
  /* structure definition goes here */
  data_el **buckets_array;
} hash_table, *Phash_table;

typedef struct word_{
  char key[WORD_SIZE];
  int frequency;
} word;

int main()
{

int size=0;
word *new_word;
new_word = (word *)malloc(sizeof(word));

new_word->frequency = 5;
strcpy(new_word->key, "Lalalal");
//      ^ ^ ^ ^               - ooops! you need to copy lalalal bytes into key[] array   

Phash_table table_p;
table_p = (Phash_table)malloc(sizeof(hash_table));
table_p->buckets_array = (data_el **)malloc(sizeof(data_el *)*(size+1));


table_p->buckets_array[0] = (data_el *)malloc(sizeof(data_el));
//      ^ ^ ^ ^                - ooops! you might need some data_el

table_p->buckets_array[0]->data = (void*)new_word;


/*Is this right? How do I cast this? (word*) ?*/
word* pdata=table_p->buckets_array[0]->data;
//      ^ ^ ^ ^                - the readable way

printf("Key :%s Frequency:%d ",((word*)(table_p->buckets_array[0]->data))->key, //<--the insane cast way (promote void* data_el.data to a word*)
            pdata->frequency);

            return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM