gpt4 book ai didi

c - 对结构中的多个项目进行 bsearch

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

已修复。

包括

main()
{
int n;
int i;
char tempMonth[255]; //Used to store the month until checked

scanf("%d", &n);

struct date *list;

list = (struct date *)malloc((n * sizeof(struct date)));

for(i = 0; i < n; i++)
{
scanf("%s %d %d", tempMonth, &list[i].day, &list[i].year);
list[i].month = getMonth(tempMonth);
}

convertFullYear(list, n);

qsort(list, n, sizeof(struct date), (compfn)sortDates);

convertSmallYear(list, n);

for(i = 0; i < n; i++)
{
printf("%s %d %02d\n", months[list[i].month], list[i].day, list[i].year);
}

char *pos = (char*) bsearch(Jan, list, sizeof(list), sizeof(Jan), findJan);
}

正如你所看到的,我已经将我认为正确的内容称为 bsearch,但是如果它是正确的,我不知道从这里该去哪里。

最佳答案

如果您要搜索特定日期,请使用struct date 作为键:

struct date Jan;
Jan.month = 0;
Jan.year = 00;
Jan.day = 1;

然后您可以使用 sortDates 函数(您应该将其重命名为 compareDates):

struct date* pos = bsearch(
&Jan, /* pointer to the structure above */
list, /* pointer to your array */
n, /* number of elements in your array */
sizeof(struct date), /* size of each element */
(compfn)sortDates /* compare function */
);

另请参阅http://www.cplusplus.com/reference/clibrary/cstdlib/bsearch/http://en.cppreference.com/w/cpp/algorithm/bsearch获取更多示例。

关于c - 对结构中的多个项目进行 bsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9634578/

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