气泡根据大写和小写字母对字符串进行排序

时间:2019-02-16 23:31:47

标签: c memory-leaks segmentation-fault bubble-sort

我正试图让我的2d数组冒泡。一旦达到这一点,我就会发生内存泄漏:

te = word[i];
word[i] = word[i+1];

一旦到这一点,我就会遇到段错误:

   word[i+1]=te;

我曾尝试使用strcpy复制字符串,但是当我也使用它时仍然遇到段错误错误。

void word_sorter(char** word,int numWord){

        int i =0;
        int j =0;
        for(i = 0; i < numWord; i++){

            for(j = 0; word[i][j] != '\0'; j++){


                        if(word[i][j]>= 'A' && word[i][j] <= 'Z'){

                                 char *te;
                                te =(char*)calloc(10000,sizeof(char));
                                te = word[i];
                                word[i] = word[i+1];
                                word[i+1]=te;



                        }



               }

        }

}

我正在尝试对字符串进行排序,以使大写字母优先于小写字母

INPUT: aand AAnd Aand
OUTPUT:AAnd Aand aand

1 个答案:

答案 0 :(得分:0)

您正在分配内存并将该地址分配给te,然后立即用te = word[i]覆盖该值。这将泄漏calloc返回的内存。

word[i+1]将在i循环时,在i == numWord - 1循环的最后一次迭代之后访问数组末尾。这是您的细分错误的根源。