【问题标题】:Bubble Sorting Strings According to Upper Case and Lower Case Letters根据大写和小写字母对字符串进行冒泡排序
【发布时间】:2019-07-10 17:46:33
【问题描述】:

我正在尝试对我的二维数组进行气泡排序。一旦我到达这一点,我就会出现内存泄漏:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多