【发布时间】:2019-09-15 15:53:13
【问题描述】:
我有以下代码
typedef struct{
int fildes;
char key[MAX_KEYLEN];
} item_t;
static int nitems;
static item_t *items;
FILE *filelist;
int capacity = 16;
char *path, *ptr;
if( NULL == (filelist = fopen(filename, "r"))){
fprintf(stderr, "Unable to open file in content_init.\n");
exit(EXIT_FAILURE);
}
items = (item_t*) malloc(capacity * sizeof(item_t));
nitems = 0;
while(fgets(items[nitems].key, MAX_KEYLEN, filelist)){
/*Taking out EOL character*/
items[nitems].key[strlen(items[nitems].key)-1] = '\0';
// and there's more code below which is not relevant to the question
在上面的代码中,
Item_t 是一个结构体,定义如下
typedef struct{
int fildes;
char key[MAX_KEYLEN];
} item_t;
那么,items 被定义为static item_t *items;
items 使用以下代码初始化items = (item_t*) malloc(capacity * sizeof(item_t));
那么,下面就用items做完fgets(items[nitems].key, MAX_KEYLEN, filelist)
items 应该是一个结构。怎么变成数组了?我说数组是因为,items[nitems] 正在完成
这让我觉得 items 是 item_t 结构的数组
【问题讨论】:
-
capacity应该代表什么?如果您想要指向单个结构的指针,请使用malloc(sizeof(item_t)) -
在我看来,容量是数组中结构的数量