gpt4 book ai didi

c - 交换 char * array[ ] 导致问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:55 26 4
gpt4 key购买 nike

void sortArray(char* array[], int count){
int compare;
int index;
for(index = 0; index < count; index++){ //runs through array, keeping track of index
for(compare = index; compare < count; compare++){
if (strcmp(array[compare] , array[index]) <= 0){
swap(*(array+compare), *(array+index));
}
}
}
}
void swap(char *strA, char *strB){
char *temp = (char *)malloc((strlen(strA)+1) * sizeof(char));
assert(temp!=NULL);
strcpy(temp, strA);
free(strA);
strA=(char *)malloc((strlen(strB)+1) * sizeof(char));
assert(strA!=NULL);
strA=strcpy(strA, strB);
free(strB);
strB= (char *)malloc((strlen(temp)+1) * sizeof(char));
assert(strB!=NULL);
strcpy(strB, temp);
free(temp);
}

给出输出:

Array1[0]: Adam Pendleton
Array1[1]: Jeison Ortega
Array1[2]: Theodore Staake
Array1[3]: Patrick Mahoney
Array1[4]: Andrew Silberstein
Array1[5]: Alan Boulais
Array1[6]: Daniel Comeau
Array1[7]: Sean Mikhael
Array1[8]: Sarah Shank
Array1[9]: Daniel Verge
Array1[10]: Dhimitris Natsis
Array1[11]: Kathleen Lent
Array1[12]: Osei Collins
Array1[13]: Jason Hintlian
Array1[14]: Michael Gibson
Array1[15]: Alex Grossi
Array1[16]: Michael Svedberg
Array1[17]: Randall White
Array1[18]: Alvin Cordor
Array1[19]: Rodrigo Roldan
Array1[20]: Matthew McArthur
Array1[21]: Jesse Anaya
Sorted Array1[0]: Adam Pendleton
Sorted Array1[1]: Patrick Mahoney
Sorted Array1[2]: Theodore Staake
Sorted Array1[3]: Sarah Shank
Sorted Array1[4]: Dhimitris Natsis
Sorted Array1[5]: Alan Boulais
Sorted Array1[6]: Alex Grossi
Sorted Array1[7]: Alvin Cordor
Sorted Array1[8]: Sean Mikhael
Sorted Array1[9]: Osei Collins
Sorted Array1[10]: Michael Svedberg
Sorted Array1[11]: Daniel Comeau
Sorted Array1[12]: Daniel Verge
Sorted Array1[13]: Jason Hintlian
Sorted Array1[14]: Jesse Anaya
Sorted Array1[15]: Michael Gibson
Sorted Array1[16]: Matthew McArthur
Sorted Array1[17]: Randall White
Sorted Array1[18]: Rodrigo Roldan
Sorted Array1[19]: Kathleen Lent <-----not sure why this is dupe
Sorted Array1[20]: <-----not sure why this is here
Sorted Array1[21]: Kathleen Lent

我不确定这些空格是从哪里来的,也不知道为什么会有重名。我什至创建了另一个名为 reverseArray 的函数,它只是交换了第一个和最后一个字符串,看起来问题源于交换函数,我的猜测是当它复制字符串时那里有些困惑。

因为这只是正在发生的事情的一小部分,我已经从文件中逐行读取文本以用名称字符串填充 char* array[],这可以正常工作,正如数组正确打印所证明的那样在排序之前。

最佳答案

我还不确定你的确切问题,但你可以通过交换字符串在数组中的位置而不是更改字符串本身来做一个更简单和更有效的工作:

void sortArray(char* array[], int count) {
int compare;
int index;
char *tmp;
for(index = 0; index < count; index++) {
for(compare = index; compare < count; compare++) {
if (strcmp(array[compare], array[index]) <= 0) {
tmp = array[compare];
array[compare] = array[index];
array[index] = tmp;
}
}
}
}

关于c - 交换 char * array[ ] 导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444578/

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