我在结构中选择了一些字符串时出现问题。我输入的所有值在排序后都不会改变位置。我认为我遗漏了一些小问题,但我无法在互联网上找到相关的帮助。 *p_customer_start
指向数组的开头。 p_outer
和p_inner
应该进行排序。有谁知道出了什么问题?
void sort_customers(int quantity, struct customer *p_customer_start)
{
struct customer *p_customer,
*p_outer,
*p_inner,
temp_customer;
printf("\nInside the sorting function.");
for(p_customer = p_customer_start; (p_customer-p_customer_start) < quantity; p_customer++)
{
p_inner = p_customer;
for(p_outer = p_customer + 1; p_outer <= quantity; p_outer++)
if(strcmp(p_outer->customer_name, p_inner->customer_name) > 0)
p_inner = p_outer;
temp_customer = *p_customer;
*p_customer = *p_inner;
*p_inner = temp_customer;
p_inner++;
}
return;
}
答案 0 :(得分:0)
可能是这种比较
p_outer <= quantity
你可能想尝试这个
p_outer <= (p_customer_start + (quantity-1))
p_outer 将指向某个系统内存位置,并且内存位置的地址可能大于您要排序的数组中的元素数。