使用冒泡排序对指针数组进行排序,返回未排序的数组

时间:2013-11-18 21:38:24

标签: c arrays sorting pointers struct

我遇到了排序指针数组的问题,无法弄清楚我做错了什么。 基本上,我必须读取文件,并创建两个数组,一个是结构数组,另一个是指向这些结构的指针数组。然后我必须对两个数组进行排序,第一个指针一个,然后结构一个,时间需要多长时间(现在我不关心时间)。 运行程序后,看起来像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;
                }
            }
        }
    }
    

如果有人能解释我做错了什么,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是你的主要问题:

for(i = 0; i  arr[k+1].size)

你错过了一个“<”在你的两个for循环中签名和“i ++”。