我遇到了排序指针数组的问题,无法弄清楚我做错了什么。 基本上,我必须读取文件,并创建两个数组,一个是结构数组,另一个是指向这些结构的指针数组。然后我必须对两个数组进行排序,第一个指针一个,然后结构一个,时间需要多长时间(现在我不关心时间)。 运行程序后,看起来像bubble_sort_ptr()不对数组进行排序。所以,我想我写的是一个糟糕的函数,当我创建一个指针数组时,我在那里做错了。
#include
#include
#define MAX_SIZE 500 /* max size of the file in kB */
#define NUM_OF_FILES 10 /* number of file to read, and sort */
typedef struct file_txt /* structure to store file information */
{
char filename[10];
char buffer[MAX_SIZE * 8 * 1000]; /* Null terminated text from the file */
int size; /* size of the file */
} file_txt;
void bubble_sort(file_txt array[]);
void bubble_sort_ptr(file_txt **arr);
int main()
{
int i;
file_txt* files; /* an array to store file information */
file_txt* files_ptr[NUM_OF_FILES]; /* an array to store pointers to file information */
if((files = (file_txt*) malloc(sizeof(file_txt) * NUM_OF_FILES)) == NULL) /* allocate memory for files array */
{
printf("Error calling malloc\n");
exit(1);
}
for(i = 0; i arr[k+1].size) /* decreasing order */
{
temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}
}
void bubble_sort_ptr(file_txt **arr)
{
int i, j;
file_txt *temp;
//printf("Inside ptr sort\n");
for(i = 0; i (*arr)[j+1].size)
{
temp = *(arr+j);
*(arr+j) = *(arr+j+1);
*(arr+j+1) = temp;
}
}
}
}
如果有人能解释我做错了什么,我将不胜感激。
答案 0 :(得分:0)
这是你的主要问题:
for(i = 0; i arr[k+1].size)
你错过了一个“<”在你的两个for循环中签名和“i ++”。