所以我有一个示例 array
:
char* drivers[10] = {"Mark", "Jacob", "Andre", "Thomas", "Hellboy"};
还有一个 srand
函数,它为每个司机生成随机的“单圈时间”并将单圈时间存储到一个数组
:
float lap_time[10];
我需要分别对它们进行排序以获得“前 1 名”和“最后 1 名”,我正在考虑冒泡排序,但它似乎无法正常工作。它会产生一个错误。总线故障或类似的东西。如果我删除 strcpy()
部分,它仍然可以正常工作。但是与 strcpy()
相关的某处有错误。
这只是排序功能,其他一切正常。当 strcpy()
与 char tmp[]
数组一起添加时,此函数会崩溃。
printf()
有效。只是让我的 strcpy()
工作有问题。
排序:
#define maks 10;
int Fastestdriver(char* drivers[], float lap_times[], char tmp[maks])
{
int i, j, a;
for (i = 0; i < 10; ++i)
{
for (j = i+1 ; j < 10 ; ++j)
{
if (lap_time[i] < lap_time[j])
{
a = lap_time[i];
lap_time[i] = lap_time[j];
lap_time[j] = a;
strcpy(tmp, drivers[i]);
strcpy(drivers[i], drivers[j]);
strcpy(drivers[j], tmp);
}
}
}
return 0;
}
最佳答案
你已经像这样声明和初始化了 -
char* drivers[10]={"Mark", "Jacob", "Andre", "Thomas", "Hellboy"};
drivers[0]
,drivers[1]
是字符串文字(常量 - 不应修改 )并且在函数中你尝试用 strcpy
修改它们,因此这个问题-
strcpy(drivers[i], drivers[j]);
strcpy(drivers[j], tmp);
你可以互相分配指针 -
char *tmp; // declare char * not char []
...
tmp=drivers[i];
drivers[i]=drivers[j];
drivers[j]=drivers[i];
关于c - 使用 strcpy 进行冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34185368/