gpt4 book ai didi

c - 在 C 中按字母顺序对字符串和结构进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:58 24 4
gpt4 key购买 nike

<分区>

我正在尝试编写一个函数,它从结构中获取一组字符串并按字母顺序组织结构。这是我目前所拥有的:

// Preconditions: array of structure "Shift"
// integer value indicating number of shifts
// Postconditions: none - this function does not return anything.
// Actions: Sort the shifts by the TA's first name.

void sort_data(struct Shift shift_data[], int *num_shifts)
{
int i,j;

for(i=0; i<num_shifts; i++)
for (j=0; j<num_shifts; j++)
{
if (strcmp(shift_data[i+1].name, shift_data[i].name) < 0)
{
temp[i]=shift_data[i];
shift_data[i]=shift_data[i+1];
shift_data[i]=temp[i];
}

}


}

我不确定是否需要嵌套循环。我确信 num_shifts 和 shift 数据正在被正确读取和指向。我还在我的代码顶部声明了我的结构和与结构相关的变量:

struct Shift
{
char name[100];
char day_of_week[100];
int start_hour;
int end_hour;
};

struct Shift shift_data[100];
struct Shift temp[100];

很抱歉没有说明这一点,但我需要使用这三个函数:

int read_data(struct Shift shift_data[], int *num_shifts);
void sort_data(struct Shift shift_data[], int *num_shifts);
void print_data(struct Shift shift[], int *num_shifts);

我可以添加其他人,但这不是必需的。

我需要弄清楚如何根据存储在 shift_data[i].name 中的函数中的字符串类型对结构进行排序

提前感谢您的帮助

这是完成的排序函数的样子:

// Preconditions: array of structure "Shift"
// integer value indicating number of shifts
// Postconditions: none - this function does not return anything.
// Actions: Sort the shifts by the TA's first name.

void sort_data(struct Shift shift_data[], int *num_shifts)
{
int i, changed;
do
{
changed = 0;
for (i=0; i < (*num_shifts) - 1; i++)
{
if (strcmp(shift_data[i].name, shift_data[i+1].name) > 0)
{
memcpy(&temp, shift_data + i, sizeof (struct Shift));
memcpy(shift_data + i, shift_data + i + 1, sizeof (struct Shift));
memcpy(shift_data + i + 1, &temp, sizeof (struct Shift));
changed = 1;
}
}
} while (changed != 0);
}

谢谢大家的帮助

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