gpt4 book ai didi

c - bsearch 与结构指针数组

转载 作者:行者123 更新时间:2023-11-30 17:25:11 24 4
gpt4 key购买 nike

我有一个结构:

typedef struct entry_t {
char * name;
int lines [MAX];
int n;/*n lines*/
} entry_t;

和一个结构数组entry_t * list[MAX];

我尝试使用 bsearch 来获取条目(如果我的以下函数中存在该条目):

int addToList(entry_t * list[], int n, const char * name, int lineNr){
int i = 0;
int j = 0;
entry_t * entry;
entry_t * sentry;
bool found = false;
char * tmp = (char*) malloc(sizeof(char)*MAX);

sentry = (entry_t *) bsearch(name,list,n,sizeof(entry_t *), cmpEntries2);
if(sentry != NULL){
printf("%s",sentry->name);
i = sentry->n;
sentry->lines[i] = lineNr;
sentry->n++;
}
else {
sentry = (entry_t *) malloc(sizeof(entry_t));
strcpy(tmp,name);
sentry->name = tmp;
sentry->lines[0] = lineNr;
sentry->n = 1;
list[n] = sentry;
n++;
}

return n;
}

int cmpEntries2(const void * a, const void * b){
assert (a != NULL);
assert (b != NULL);
printf("DB %s %s\n",(const char*)a,(*(entry_t **)b)->name );
return strcmp( (const char*)a, (*(entry_t **)b)->name );
}

我的数据库日志

DB argc main
DB argv main
DB printf argc
DB printf argv
DB printf argc
DB printf argv
DB printf printf
0M:

奇怪的是,sentry 不为空,但name 很奇怪(随机内存位置)。

谢谢

最佳答案

sentry(当用于接收bsearch()的结果时)必须是struct entry_t **类型。

关于c - bsearch 与结构指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27095536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com